今天做项目的时候,出现了奇怪的状况,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()不执行的方法,希望对大家有帮助。