Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [android,13]13.避免anr(application no response)的操作

[android,13]13.避免anr(application no response)的操作

編輯:關於Android編程

 

一、出現applicationno response 原因:

1、原因:

①、activity是在主線程裡面被創建的,

activity裡面的按鈕控件的點擊事件,

界面的顯示 view對象內容的更改,

這些操作都是運行在主線程裡面的.

主線程還處理Window.Callback, KeyEvent.Callback,

與窗體相關顯示的回調函數, 還處理了與點擊,鍵盤

等相關的點擊事件.

所以當主線程阻塞久了就不能響應其他操作,就會報anr(application no response)異常。

 

二、為了避免應用程序出現anr的異常:

1.耗時的操作都不能放在主線程裡面執行,要放在子線程中執行,這些操作。

如以下操作:

拷貝大的文件. 100M

訪問網絡的操作

阻塞式的請求. udp socket

例:

public class AnrActivityextends Activity {

 

public void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

//按鈕的點擊事件:

public void click(View view){

newThread(){ //創建子線程:

public void run() {

 

System.out.println("睡眠10秒鐘");

System.out.println(Thread.currentThread().getName());

//當前線程睡眠10秒鐘

try {

Thread.currentThread().sleep(10000);

}catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

};

}.start();

}

}

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved