Android 短信轟炸機App 開發記錄
來自: http://blog.csdn.net//never_cxb/article/details/47614247
項目需求
根據電話號碼, 調用的是互聯網第三方接口發送的短信,使用的是其他網站的get post請求。不會泄露自己的手機號碼的,不需本手機的短信費用
亮點
- 滾動數字的TextView, 仿支付寶的余額寶滾動效果
- 利用Activity托管Fragment的方式
- 能夠根據接口的response(一般是json字符串)判斷發送成功的條數
- 多線程發送, 更快
- 圓角 Button 設計
- 橙色底線的edittext
- 有用戶友好提示, 比如: 當前網絡無法連接, 稍后再試
前期準備
圓角按鈕
查看這篇文章 Android 實現圓角按鈕
Internet是否可用
查看這篇文章 Android 判讀Internet是否可用
Log工具類
查看這篇文章 定制自己的android工具類
橙色底線的edittext
查看這篇文章定制edittext 改變底線顏色
遇到的問題
AsyncTask的全局線程池有幾個工作線程
How many AsyncTasks can you run at once?
In most versions of Android, the answer is 128.
有些版本是5個, 我在我機子上測試, 10個 AsyncTasks 可以 運行
ConcurrentModificationException
08-13 17:58:17.905: E/AndroidRuntime(20074): Caused by: java.util.ConcurrentModificationException
for (RequestGetPostTask task : taskList) { if (task.getStatus() == AsyncTask.Status.FINISHED) { taskList.remove(task); } }
這段代碼的錯誤, 遍歷的同時又對 List 修改
多線程發送短信, 最后需要統計成功的個數
利用 synchronized 進行同步
synchronized (successAccount) { if (result instanceof Boolean) { if ((Boolean) result) { ++successAccount; } } }
怎么樣判斷 所有的 AsyncTask 都結束
Solution
把 AsyncTask 先都 加到一個 集合里, 然后遍歷這個集合, 查看狀態優化
可以把 finished 的AsyncTask移出集合, 這樣減少下次遍歷的數目
List<RequestGetPostTask> taskList = new ArrayList<RequestGetPostTask>(); for (int i = 0; i < timesInt; i++) { RequestGetPostTask singleTask = new RequestGetPostTask(getActivity(), bobmResultListener); taskList.add(singleTask); singleTask.execute(); }
while (true) { if (taskList == null || taskList.size() == 0) { break; } Iterator<RequestGetPostTask> it = taskList.iterator(); while (it.hasNext()) { if (it.next().getStatus().equals(AsyncTask.Status.FINISHED)) { it.remove(); } } if (taskList == null || taskList.size() == 0) { break; } try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } }
state_focused 和 state_window_focused 區別
android:state_focused 獲得焦點
android:state_window_focused 所在的窗口獲得焦點
預覽 layout xml 產生的效果圖 模糊 不清楚
原因
沒有使用 9.png 直接使用了 png, 圖片拉伸后變形
錄制app運行視頻
cd /Applications/sdk/platform-tools/ ./adb shell screenrecord /sdcard/ll.mp4
按下 ctrl + c 終止 或者到了最長錄制時間(179s)
</blockquote>
如果文章對您有幫助,請多多關照^=^
</div>
本文由用戶 LottieKimbr 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!