notifyDataSetChanged()上的WinDeath

您好,我有以下问题:

data.clear();
data.addAll(datasource.getFilesInFolder());  //gets the data from Sqlite database
adapter.notifyDataSetChanged();

生成这个logCat输出:

 12-19 14:34:30.864: W/Binder(986): Caught a RuntimeException from the binder stub implementation.
 12-19 14:34:30.864: W/Binder(986): java.lang.NullPointerException
 12-19 14:34:30.864: W/Binder(986):     at        android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280)
 12-19 14:34:30.864: W/Binder(986):     at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129)
 12-19 14:34:30.864: W/Binder(986):     at android.os.Binder.execTransact(Binder.java:404)
 12-19 14:34:30.864: W/Binder(986):     at dalvik.system.NativeStart.run(Native Method)
 12-19 14:34:30.864: W/InputMethodManagerService(757): Got RemoteException sending setActive(false) notification to pid 30040 uid 10174

这个异常会导致WIN DEATH ...

好吧,我意识到也许这是另一回合,WIN DEATH导致这个日志输出,因为在日志WINDEATH之前,然后我不知道为什么windeath发生。

我的适配器扩展了BaseAdapter,没有什么特别的东西。 非常奇怪的是以下几点:

所提到的这段代码位于由另一个类触发的自定义侦听器中。 当我将有问题的部分放在听众之外时,它运作良好。

Caught a RuntimeException from the binder stub implementation意味着什么? 它可能是数据库的问题吗? 或者可能是我的自定义侦听器? 任何人有一个想法有什么问题?


我已经看到在执行并发操作时遇到这个问题的各种问题。 看看这个线程(fling + service)和这个(从2个线程画在画布上)。

你正在谈论一个不同班级的自定义听众,是否可以一次做几件事?


您应该直接将数据添加到适配器中。

而不是做

data.clear();
data.addAll(datasource.getFilesInFolder());  //gets the data from Sqlite database
adapter.notifyDataSetChanged();

你应该做

if(adapter!=null)
{
    adapter.clear();
    adapter.addAll(datasource.getFilesInFolder());  //gets the data from Sqlite database
    adapter.notifyDataSetChanged();
}

我认为适配器是空的,这是你的情况造成的问题

链接地址: http://www.djcxy.com/p/18105.html

上一篇: WinDeath on notifyDataSetChanged()

下一篇: remove angular comments from html