在Android 7之前的SDK上,LiveData onResume无法获取新值

时间:2017-09-06 08:59:16

标签: android android-livedata

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

  1. 当我关闭应用程序时,发送一些消息,然后再次打开应用程序,我通过LiveData从ViewModel获取收到的值。
  2. 但是如果我在当前的活动上打开新活动,在ViewModel中收到一些消息,并返回到该活动,我没有在活动中收到这些消息。
  3. 在第一种情况onPauseonStop然后调用onStartonResume。在第二种情况onPause中,然后调用onResume。另外在第二种情况下,我有活跃的观察者,但我没有收到消息。

    ChatViewModel

    class ChatViewModel : ViewModel() {
    
        var adapterMessagesLive: MutableLiveData<AdapterChatItems> = MutableLiveData()
    
    fun addMessage() {
       adapterMessagesLive.value = AdapterChatItems(items, addDirection)
    }
    
    }
    

    ChatActivity

    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上它无效。

0 个答案:

没有答案