油煎面包块没有正确显示 - CroutonQueue不知何故卡住了?

时间:2013-10-27 15:27:42

标签: android notifications crouton

我正面临着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 但是也没有用......

感谢任何建议! :)

2 个答案:

答案 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();
    }

解决了这个问题! :) 很多:)