3

我正在使用带有活动的 LiveData。当我在 Android 7 上测试时一切正常,但是当我在较低的 Android SDK 版本上测试时出现问题。

  1. 当我关闭应用程序,发送一些消息,然后再次打开应用程序时,我正在通过 LiveData 从 ViewModel 获取接收到的值。
  2. 但是,如果我在当前活动上打开新活动,在 ViewModel 中收到一些消息,然后返回到该活动,我不会在活动中收到这些消息。

在第一种情况下onPauseonStop然后onStartonResume被调用。在第二种情况下onPause, thenonResume被调用。同样在第二种情况下,我有活跃的观察者,但我没有收到消息。

聊天视图模型

class ChatViewModel : ViewModel() {

    var adapterMessagesLive: MutableLiveData<AdapterChatItems> = MutableLiveData()

fun addMessage() {
   adapterMessagesLive.value = AdapterChatItems(items, addDirection)
}

}

聊天活动

public class ChatActivity implements LifecycleRegistryOwner {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    viewModel = ViewModelProviders.of(this).get(ChatViewModel.class);
    viewModel.getAdapterMessagesLive().observe(this, adapterChatItemsObserver -> {
               getAdapter().addMessages(adapterChatItemsObserver);
    }
});
}

更新

经过更多调试,我发现在 Android 7 活动中,在onPause调用后继续从 LiveData 接收值。但在较旧的 Android SDK 上它不起作用。

4

0 回答 0