我正面临着Croutons通知库的严重问题, 当我快速切换我的活动时,有时(通常确实) croutons 更新,例如遗失凭据或“先插入日期”不再显示, 所以用户没有任何信息就会停留,问题是什么。
例如也是简单的用例: 登录到应用程序, 注销,
尝试重新登录但使用虚假凭据, 不再显示烤饼了。
我试过了:
inPause()中的Courton.clearAllNotifcations()
,
另外,
onPause(),
Crouton.clearCroutonsForActivity(this)
可能解决问题,但事实并非如此。
我在 CroutonLibrary 中也调试,问题似乎是, 一个Crouton被添加到队列中,活动完成,一些事情结束(比如aSyncTask在onPostExecute()中显示一个crouton,这个被再次添加到队列中,然后队列被卡住了。
另外.clearAllNotifications(实际上清除队列)不起作用,因为后来添加了courton(asynctask在acitvity.finish()之后完成),问题仍然存在。
也尝试过:
@Override
protected void onDestroy() {
Crouton.clearCroutonsForActivity(this);
Crouton.cancelAllCroutons();
super.onDestroy();
}
knwon问题:https://github.com/keyboardsurfer/Crouton/issues/24 但是也没有用......
感谢任何建议! :)
答案 0 :(得分:1)
您在Crouton上找到了正确的问题以及负责产生问题的代码部分。
在您的情况下,它与您AsyncTask
实际上应该已经被销毁时仍在运行的Activity
相关联。将长时间运行的行为移出面向用户的组件(即使用服务层)通常是一件好事。
在此之前canceling the AsyncTask
应该做到这一点。
答案 1 :(得分:0)
thx @keyboardsurfer 的解释......
<强>添加... 强> 并且将AsyncTask 解压缩为成员变量...
@Override
protected void onPause() {
Crouton.clearCroutonsForActivity(this);
if (loadTasksTask != null) {
loadTasksTask.cancel(true);
}
super.onPause();
}
解决了这个问题! :) 很多:)