在我的应用程序中,我需要从 BroadcastReceiver 在我的数据库中添加/删除/更新数据。我想知道这方面的最佳做法是什么。由于在主线程上调用了 onReceive,因此我需要一种在工作线程上运行查询的方法,并且在完成时我需要 onReceive 方法中的响应。
为此,我使用了像这样的简单观察者模式。
public class NetworkChangeReceiver extends BroadcastReceiver implements IDbUpdateListener{
private MyRepository repo;
private Application application;
@Override
public void onReceive(Context context, Intent intent) {
//Some conditions
//Initializing and setting listener for repo
respo = new MyRepository(this); //this is the listener interface
repo.getAllContents();
}
}
}
//Interface method implemented
@Override
public void onDbUpdate(Content content) {
//Do something with the data
}
}
我将侦听器传递给我在侦听器上调用 onDbUpdate() 方法的存储库,从而在接收器中获得响应。
如果它是一个活动/片段而不是一个广播接收器,我会简单地使用一个带有实时数据的视图模型作为可观察对象,在我的活动中,我会观察视图模型是否有这样的变化
mViewModel.getAllContent().observe(this, new Observer<List<Content>>() {
@Override
public void onChanged(@Nullable final List<Content> contents) {
// Do something
}
});
我的方法可以吗,还是有明显更好的方法在 BroadcastReceiver 中实现这一点?谢谢!!