如何更新服务启动的窗口中的列表视图?

时间:2014-02-11 02:59:40

标签: android android-intent android-listview android-service

我正在我的应用程序顶部创建一个半透明窗口,该窗口始终可见。它在我使用应用程序时显示了一些日志。

为此,我创建了一个使用窗口SYSTEM_SERVICE在屏幕上显示半透明UI的服务。此服务是图书馆的一部分。我将服务和所需权限添加到我的应用程序的清单文件中。

我通过观察者类从库中启动服务。现在,我需要在半透明窗口中显示一个列表。此列表应自动滚动。列表视图的数据是同一个观察者类的一部分,它继续向列表添加字符串。我在我的服务中创建了一个适配器和列表视图(作为视图)并将其添加到半透明窗口中。

我想立即更新列表。在更新字符串的arraylist时,从此观察者类访问适配器对象并调用notifyDataSetChanged会使我的应用程序崩溃:

" android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。"

如果我在服务中初始化适配器,当列表更新时,如何从观察者类调用notifyDataSetChanged?

我到处都在使用app环境。底层应用程序应该像往常一样运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

只是一个想法。您可以向服务发送消息(可能包含要更新的数据)并允许服务更新UI。鉴于该服务是创建Window的实体,这似乎特别合适。