今天做項目的時候,出現了奇怪的狀況,AsyncTask 的onPostExecute()方法不執行,上網查找了一番,都沒有找到原因,但是網上大多數原因介紹是需要UI主線程中調用AsynTask,突然想起今天還添加了極光推送相關代碼,於是,將極光推送代碼註釋後,果然onPostExecute()能夠正常執行。
於是去極光推送官網查找,果然發現有相關問題,JPUSH會影響AsyncTask的運行,在doInBackground方法裏會拋出異常,所以onPostExecute()無法正常運行,解決方法: 在你Application的onCreate方法里加入以下代碼
/**
* For developer startup JPush SDK
*
* 一般建議在自定義 Application 類裏初始化。也可以在主 Activity 裏。
*/
public class MyApplication extends Application {
private static final String TAG = "JPush";
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "[MyApplication] onCreate");
try {
Class.forName("android.os.AsyncTask");
JPushInterface.setDebugMode(true); // 設置開啓日誌,發佈時請關閉日誌
JPushInterface.init(this); // 初始化 JPush
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
以上就是解決AsyncTask onPostExecute()不執行的方法,希望對大家有幫助。