要求:'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.observe 将 LifecycleOwner
作为其第一个参数而不是 Context
,并且 activity 也是 LifecycleOwner
:
public class SupportActivity extends Activity implements LifecycleOwner {
// Your activity may be a subclass of this activity.
}
所以您可能想将 LifecycleOwner
而不是 Context
传递给您的 DatabaseUtil
。或者,如果您不关心生命周期,可以使用 LiveData.observeForever。
我想创建一个实用程序 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.observe 将 LifecycleOwner
作为其第一个参数而不是 Context
,并且 activity 也是 LifecycleOwner
:
public class SupportActivity extends Activity implements LifecycleOwner {
// Your activity may be a subclass of this activity.
}
所以您可能想将 LifecycleOwner
而不是 Context
传递给您的 DatabaseUtil
。或者,如果您不关心生命周期,可以使用 LiveData.observeForever。