今天做项目的时候,出现了奇怪的状况,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()不执行的方法,希望对大家有帮助。
版权声明:本文为博主原创文章,未经博主允许不得转载。