我有一个活动适配器及其arrayList
private ArrayList<String> data = new ArrayList<>();
当我获取数据时,我也将broadcastReceiver添加到ArrayList数据中
data.add("bla bla bla"); // brodcast data
并更新适配器
但是当活动暂停并且我错过了广播数据时,我的适配器没有更新
所以解决这个问题的方法我只是进行了一些搜索并找到了这个answer,但他没有分享这个想法
我的应用程序想法其聊天应用程序与课程的sqlite和问题我错过了BrodcastEvent当活动暂停并从sqlite获取数据每次活动恢复我认为这是一个坏主意
BroadcastReceiver
将收到没有活动开始或恢复的事件如果在您的清单中注册它。
<receiver android:name="YourReceiver" >
<intent-filter>
<action android:name="android.intent.action.YourAction" />
</intent-filter>
</receiver>
另一个问题,BroadcastReceiver
如何通知消息适配器。
您可以将单个对象定义为观察者注册管理器。如果activity
启动,它会自行注册,BroadcastReceiver
会在收到新消息时通知它。
BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) {
...
SingletonRegister.getInstance().addMessage("bla bla bla");
}
Activity
protected void onCreate(Bundle savedInstanceState) {
...
SingletonRegister.getInstance().observe(this);
}
@Override
public void update(String message) {
data.add(message);
}
如果activity
没有启动,activity
将因为未注册而不会收到通知。为了确保接收所有消息,activity
需要在注册后主动请求最后的消息。
Activity
protected void onCreate(Bundle savedInstanceState) {
...
SingletonRegister.getInstance().observe(this);
requestMessageFromServer();
}