我正在使用带活动的LiveData。我在Android 7上测试时一切正常,但是当我在较低的Android SDK版本上测试时会出现问题。
在第一种情况onPause
,onStop
然后调用onStart
,onResume
。在第二种情况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上它无效。