編輯:關於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);
};
};
}
運行後打印結果如下:
android Notification分析——你可能遇到的各種問題
通知的使用網上有各種總結,csdn上也有很多總結非常到位,在此就不做重復的總結了,需要的同學可以自行搜索或者參考下面給出的鏈接。開始學習的時候認真的讀了一些,現在功能開發
android產品研發(四)--)減小Apk大小
隨著移動技術的深入發展,各種炫酷效果的更新,在我們追求UI與UE的同時一個不如忽視的問題逐漸暴露出來,那就是apk文件越來越大,可能有的童鞋會說現在都是wifi環境,ap
Android群英傳筆記——第十二章:Android5.X 新特性詳解,Material Design UI的新體驗
這一章很多,但是很有趣,也是這書的最後一章知識點了,我現在還在考慮要不要寫這個拼圖和2048的案例,在此之前,我們先來玩玩Android5.X的新特性吧!Android
android編譯系統分析(三)-make
這篇博客的目標是摸清楚默認編譯整個android系統時代碼的流程。當我們執行make的時候,會查找當前的Makefie文件或者makefile文件並且執行,在androi