今天做项目的时候,出现了奇怪的状况,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不执行的方法。