要求:'android.arch.lifecycle.LifecycleOwner 错误

required: 'android.arch.lifecycle.LifecycleOwner error

我想创建一个实用程序 class 来管理我的 Room 数据库。使用实时数据,我能够观察数据库中的变化,但是,我只能将此观察者放在我的 Activity class 中。我想确认一下,确实如此。我尝试同时使用上下文和 Activity 作为边界。

我还将以下库添加到 gradle

implementation "android.arch.lifecycle:extensions:1.1.1"

这是我如何使用观察者的例子

   public DatabaseUtils(AppDatabase db,  Context context) {
        db.testDao().getAllLiveList().observe(
                context, new Observer<List<TestEntity>>() {
                    @Override
                    public void onChanged(@Nullable List<TestEntity> testEntities) {
                       // do work

                    }
                });

    }

这在 Activity 中工作正常,但移动到 class 不扩展 Activity 我收到错误:

第一个参数错误。找到....需要:'android.arch.lifecycle.LifecycleOwner错误

那是因为 LiveData.observeLifecycleOwner 作为其第一个参数而不是 Context,并且 activity 也是 LifecycleOwner:

public class SupportActivity extends Activity implements LifecycleOwner {
    // Your activity may be a subclass of this activity.
}

所以您可能想将 LifecycleOwner 而不是 Context 传递给您的 DatabaseUtil。或者,如果您不关心生命周期,可以使用 LiveData.observeForever