如何在WearableActivity中获得LifecycleOwner?

时间:2018-01-15 09:24:03

标签: android kotlin android-room android-livedata

当我尝试使用WearableActivity中的LiveData时,我遇到了一个问题:

val livedata = ...
val observer = ...
livedata.observe(this, observer)

当我使用扩展AppCompatActivity的活动时它起作用,但看起来WearableActivity没有实现LifecycleOwner接口,尽管它确实拥有生命周期,对吧? (observe方法需要LifecycleOwner作为第一个参数)。我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:2)

除了Karan Modi之前的评论之外,您可以根据生命周期文档中的指南实现自己的getLifeCycle()

https://developer.android.com/topic/libraries/architecture/lifecycle.html#implementing-lco

具体来说,您可以实现自己的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;
    }
}

希望这有帮助。