Android 如何让LifecycleOwner参与可穿戴活动?
当我尝试使用WearableActivity中的LiveData时,我遇到了一个问题:Android 如何让LifecycleOwner参与可穿戴活动?,android,kotlin,android-room,android-livedata,Android,Kotlin,Android Room,Android Livedata,当我尝试使用WearableActivity中的LiveData时,我遇到了一个问题: val livedata = ... val observer = ... livedata.observe(this, observer) 它在我使用活动扩展AppCompativeActivity时起作用,但看起来WearableActivity并没有实现LifecycleOwner接口,尽管它有一个生命周期,不是吗?(观察方法要求LifecycleOwner作为第一个参数)。如何使其工作?官方网站上显
val livedata = ...
val observer = ...
livedata.observe(this, observer)
它在我使用活动扩展AppCompativeActivity时起作用,但看起来WearableActivity并没有实现LifecycleOwner接口,尽管它有一个生命周期,不是吗?(观察方法要求LifecycleOwner作为第一个参数)。如何使其工作?官方网站上显示的最新方法是扩展
androidx.fragment.app.FragmentActivity
并实现AmbientModeSupport.AmbientCallbackProvider
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView will be the same as before
setContentView(R.layout.activity_main)
// Initialize yourCustomObserver here or have it injected
// FragmentActivity has getLifeCycle() so you get it for free
getLifeCycle().addObserver(yourCustomObserver);
}
就这样,您不需要手动更新LifecycleOwner(又名活动)生命周期状态
先前的答复
继Karan Modi之前的评论之后,您可以根据lifecycle文档中的指南实现自己的getLifeCycle()
具体而言,您可以实现自己的LifeCycleOwner,如图所示:
public class MyActivity extends WearableActivity implements LifecycleOwner {
private LifecycleRegistry mLifecycleRegistry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLifecycleRegistry = new LifecycleRegistry(this);
mLifecycleRegistry.markState(Lifecycle.State.CREATED);
}
@Override
public void onStart() {
super.onStart();
mLifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@NonNull
@Override
public Lifecycle getLifecycle() {
return mLifecycleRegistry;
}
}
希望这能有所帮助。我推测,如果WearableActivity没有实现LifecycleOwner,那么您需要在代码中这样做,并重写getLifeCycle()方法。