gpt4 book ai didi

java - 插入服务中的房间而不更新 Activity 中的 LiveData

转载 作者:行者123 更新时间:2023-11-29 02:19:15 25 4
gpt4 key购买 nike

我正在使用 room 将前台位置服务获取的数据与 Activity 进行通信。该服务连接到 viewmodel 并插入数据,但是该 Activity 不会从 viewmodel 接收更新的 LiveData,但是它能够在开始时获取 LiveData> 对象,并在重新启动应用程序时具有准确的大小。我在这里错过了什么?我需要将新数据插入数据库,所以如果我确实需要在服务和 postValue 中使用 MutableLiveData,那么我每次都必须发布整个列表...

Activity .java


@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );

setContentView( R.layout.track_activity );

mViewModel = ViewModelProviders.of( this ).get( ViewModel.class );

mViewModel.getAllData().observe( this, ( @Nullable final <List<eData>> data ) -> {

if ( data!= null )
Log.d("DATACOUNT", String.valueOf(data.size()) );

} );
}

服务.java

@Override
public void onCreate() {
super.onCreate();

AppDatabase mDB = AppDatabase.getDatabase( this.getApplication() );
mDataDao = mDB.dataDao();

mExecutor = Executors.newSingleThreadExecutor();

}

...

private void receiveLocation( LocationResult locationResult ) {

...
mExecutor.execute( () -> mDataDao.insertData( new eData( ... ) ) );

}

数据道.java

@Dao
public interface DataDao {

@Query( "SELECT * FROM eData" )
LiveData<List<eData>> getAllData();

@Insert
long insertData( eData data );
}

应用数据库.java

@Database(entities = { eData.class }, version = 1 )
public abstract class AppDatabase extends RoomDatabase {

public abstract DataDao dataDao();

private static AppDatabase INSTANCE;

public static AppDatabase getDatabase( final Context context ) {
if ( INSTANCE == null ) {
synchronized ( AppDatabase.class ) {
if ( INSTANCE == null ) {
INSTANCE = Room.databaseBuilder( context.getApplicationContext(),
AppDatabase.class, "locationapp" )
.build();
}
}
}
return INSTANCE;
}

存储库和数据库是单例。但是不知何故,在我的 Activity 中观察到的 LiveData 在服务中插入实体时不会更新,它确实会插入到数据库中,因为当我重新启动应用程序时,计数会增加。

最佳答案

最终根本没有在服务中使用空间。第一,我不知道它是否会更快,第二,如果我坚持使用 Activity 并且只创建一次 ViewModel 和 ExecutorService,它会使用更少的内存。

关于java - 插入服务中的房间而不更新 Activity 中的 LiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57495102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com