編輯:關於Android編程
有些應用在使用中會彈出一個對話框,一般這個對話框叫做應用程序無響應對話框(ANR:Application Not Responding)。雖然這個提示框有等待和關閉應用程序兩種選擇,但是它的彈出就已經影響了用戶使用app過程中的體驗,所以一般來說,Android開發的過程中都會嚴格控制ANR的出現。
ANR表面原因:應用在一定時間內(一般是5秒)沒有響應輸入操作(例如輸入,按鈕,手勢觸摸等)。
ANR根本原因:Android主線程中進行耗時操作,造成主線程阻塞;BroadcastReceiver生命周期結束前沒有完成相應的耗時任務。這些耗時的操主要包括網絡,數據庫,大量的計算操作(如bitmap的處理)等。
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private TextView text; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.text); button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { System.out.println("-->開啟子線程"); new TaskThread().start(); } }); } Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 0: { System.out.println("-->回到主線程刷新ui任務"); text.setText("任務完成"); } break; default: break; } }; }; class TaskThread extends Thread { public void run() { System.out.println("-->做一些耗時的任務"); try { sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0); }; }; }運行後打印結果如下:
通知的使用網上有各種總結,csdn上也有很多總結非常到位,在此就不做重復的總結了,需要的同學可以自行搜索或者參考下面給出的鏈接。開始學習的時候認真的讀了一些,現在功能開發
隨著移動技術的深入發展,各種炫酷效果的更新,在我們追求UI與UE的同時一個不如忽視的問題逐漸暴露出來,那就是apk文件越來越大,可能有的童鞋會說現在都是wifi環境,ap
這一章很多,但是很有趣,也是這書的最後一章知識點了,我現在還在考慮要不要寫這個拼圖和2048的案例,在此之前,我們先來玩玩Android5.X的新特性吧!Android
這篇博客的目標是摸清楚默認編譯整個android系統時代碼的流程。當我們執行make的時候,會查找當前的Makefie文件或者makefile文件並且執行,在androi