NotifyDataChanged自Android服务

NotifyDataChanged自Android服务,android,service,android-listview,Android,Service,Android Listview,我有一项服务,可以在我的android应用程序上更新数据库。问题是,如果我没有显式调用“myAdapter.notifyDataChanged()”方法,应用程序本身的视图(ListView)将不会得到通知。如何从服务中执行此操作?在这里,我既没有对适配器的引用,也没有对持有它的活动的引用 我想启动我自己的自定义事件,但我不知道这在android中是否可行。我在API文档中找不到任何内容 提前谢谢 使用消息总线(LocalBroadcastManager、等) 或者,使用信使 或者,将数据库包装

我有一项服务,可以在我的android应用程序上更新数据库。问题是,如果我没有显式调用“myAdapter.notifyDataChanged()”方法,应用程序本身的视图(ListView)将不会得到通知。如何从服务中执行此操作?在这里,我既没有对适配器的引用,也没有对持有它的活动的引用

我想启动我自己的自定义事件,但我不知道这在android中是否可行。我在API文档中找不到任何内容

提前谢谢

使用消息总线(
LocalBroadcastManager
、等)

或者,使用
信使


或者,将数据库包装在
ContentProvider
中,并使用
CursorLoader
填充适配器,因为当您更改
ContentProvider
中的内容时(假设您正确实现了它),您将收到一个新的
光标
.

优雅的方法是使用
bindService
将您的活动绑定到服务。在此调用中,您需要提供一个自定义ServiceConnection对象,该对象具有一个名为
onServiceConnected
的回调函数,您可以从中获取指向服务的指针

一旦有了指向服务对象的指针,就可以要求服务在更新数据库时通知您(提供指针、回调、处理程序或任何其他机制)更新视图

通过此机制,当活动开始时,它将连接到服务,当活动结束时(onPause()),您将断开与服务的连接


这不是小事,特别是如果您以前从未这样做过,但是这种机制对于任何类型的服务都非常有用。

您如何与服务进行通信?通过StartRice,还是绑定?我正在使用startService。(主活动不直接与服务接口,而是与DB接口)服务-->DB第一个方法“LocalBroadcastManager”非常有用。谢谢,谢谢!我知道这个方法可能是正确的。但我现在尽量保持简单。此外,我过去一直在努力使用绑定服务,所以我通常尽量避免使用它们。