我在面包丁通知库方面遇到了一个严重的问题,当我快速切换我的活动时,有时(确实经常)更新的面包丁不再显示,例如缺少凭据或"先插入日期",所以用户没有任何信息,有什么问题。
例如,还有简单的用例:登录到应用程序,注销
尝试重新登录,但使用虚假凭据,不再显示面包片了。
我试过了: Courton.clearAllNotifcations()
in inPause(),此外, Crouton.clearCroutonsForActivity(this)
在 onPause() 中也是如此,
也许可以解决问题,但它没有。
我也在 CroutonLibrary 中调试过,问题似乎是,一个 Crouton 被添加到队列中,活动完成,某些东西完成(比如 aSyncTask 在 onPostExecute() 中显示一个 crouton),这个再次被添加到队列中,然后队列被卡住。
此外,.clearAllNotifications(实际上清除队列)不起作用,因为之后添加了courton(asynctask在acitvity.finish()之后完成),并且问题仍然存在。
还尝试过:
@Override
protected void onDestroy() {
Crouton.clearCroutonsForActivity(this);
Crouton.cancelAllCroutons();
super.onDestroy();
}
已知问题:https://github.com/keyboardsurfer/Crouton/issues/24但也没有用...
感谢任何建议!:)
您已经在 Crouton 上找到了正确的问题以及负责产生该问题的代码部分。
在您的情况下,它与仍在运行的AsyncTask
相关,而您的Activity
实际上应该已经被销毁了。将长时间运行的行为从面向用户的组件中移出通常是一件好事,即使用服务层。
在此之前,取消AsyncTask
应该可以解决问题。
谢谢@keyboardsurfer解释...
添加。。。并将异步任务提取到成员变量...
@Override
protected void onPause() {
Crouton.clearCroutonsForActivity(this);
if (loadTasksTask != null) {
loadTasksTask.cancel(true);
}
super.onPause();
}
修复了问题! :)非常感谢:)