在活动暂停时更新适配器数据

问题描述 投票:1回答:1

我有一个活动适配器及其arrayList

private ArrayList<String> data = new ArrayList<>();

当我获取数据时,我也将broadcastReceiver添加到ArrayList数据中

data.add("bla bla bla"); // brodcast data

并更新适配器

但是当活动暂停并且我错过了广播数据时,我的适配器没有更新

所以解决这个问题的方法我只是进行了一些搜索并找到了这个answer,但他没有分享这个想法

我的应用程序想法其聊天应用程序与课程的sqlite和问题我错过了BrodcastEvent当活动暂停并从sqlite获取数据每次活动恢复我认为这是一个坏主意

java android sqlite
1个回答
0
投票

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.