Android 短信轟炸機App 開發記錄

LottieKimbr 8年前發布 | 63K 次閱讀 Android開發 移動開發

來自: http://blog.csdn.net//never_cxb/article/details/47614247


項目需求

根據電話號碼, 調用的是互聯網第三方接口發送的短信,使用的是其他網站的get post請求。不會泄露自己的手機號碼的,不需本手機的短信費用

統計結果1

亮點

  1. 滾動數字的TextView, 仿支付寶的余額寶滾動效果
  2. 利用Activity托管Fragment的方式
  3. 能夠根據接口的response(一般是json字符串)判斷發送成功的條數
  4. 多線程發送, 更快
  5. 圓角 Button 設計
  6. 橙色底線的edittext
  7. 有用戶友好提示, 比如: 當前網絡無法連接, 稍后再試

前期準備

圓角按鈕

查看這篇文章 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 產生的效果圖 模糊 不清楚

xml 預覽 模糊 花了似的

原因

沒有使用 9.png 直接使用了 png, 圖片拉伸后變形

錄制app運行視頻

cd /Applications/sdk/platform-tools/
./adb shell 
screenrecord /sdcard/ll.mp4      

按下 ctrl + c 終止 或者到了最長錄制時間(179s)

</blockquote>

如果文章對您有幫助,請多多關照^=^

支付寶

</div>

 本文由用戶 LottieKimbr 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!