Articles of android room

Firestore作为离线持久性机制的可靠性如何?

我目前正在使用Firebase Firestore作为主要后端,从各种来源检索数据。 我也使用Android的房间用于我的移动后端。 当手机接收到数据时,如果用户几周甚至几周不再上线,它就会存储在房间数据库中。 查看设备文件后,我看到firestore将数据保存在/data/data//databases目录下的文件中。 该文件看起来像这样 我已经阅读了firestore上的脱机持久性文档,并且没有迹象表明脱机持久性是多么持久。它提到数据被缓存但不是多长时间。 我的问题是,Firestore的离线持久性的持久性是多少。 是否会建议使用它而不是使用完全成熟的本地数据库来存储可能无法在很长一段时间(几天,几周)内同步的数据? 一旦重新建立连接,它似乎已经很好地处理了同步数据。 我只是担心在某些时候该文件可能被系统删除而用户丢失了所有内容。

带有RxJava的Android Room处理空查询结果

尝试使用RxJava适配器测试新的Android Room librarty。 如果我的查询从DB返回0个对象,我想处理结果: 所以这是DAO方法: @Query(“SELECT * FROM auth_info”) fun getAuthInfo(): Flowable 以及我如何处理它: database.authDao().getAuthInfo() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .switchIfEmpty { Log.d(TAG, “IS EMPTY”) } .firstOrError() .subscribe( { authResponse -> Log.d(TAG, authResponse.token) }, { error -> Log.d(TAG, error.message) }) 我的数据库是空的,所以我希望.switchIfEmty()可以工作,但没有一个处理方法被触发。 既没有.subscribe()也没有.switchIfEmpty()

如何在房间持久性库中插入图像?

我正在为我的Android应用程序使用房间持久性库,现在我必须在我的数据库中插入图像。 我成功地为原始数据types定义了@Entity。 并且还通过转换器类,我存储了所有对象,日期,时间。 现在我必须存储图像。 我无法理解我们如何定义列信息和实体以及我们如何插入数据以及从表中读取数据。 插入单行的数据的最大大小是多少? Android SQLite中一个字段中数据的最大和最小大小是多少?

Android Room错误:Dao类必须使用@Dao注释

我正在使用Room for my android app。 我现在正在尝试设置我的数据库,但是有一条错误消息,表示Dao类必须用@Dao注释。 但正如你在编码片段中看到的那样,Dao类用@Dao注释。 有谁知道问题或我的错误可能在哪里? 两个文件都不在同一个文件夹中(DAO在服务文件夹中,而另一个类在模型文件夹中) Device.java @Entity(tableName = “device”) public class Device { @PrimaryKey(autoGenerate = true) public int device_id; @ColumnInfo(name = “identifier”) public String identifier; @ColumnInfo(name = “language”) public int language; @ColumnInfo(name = “searchFilter”) public int searchFilter; public Device(String identifier, int language, int searchFilter){ this.identifier = identifier; this.language = language; this.searchFilter […]

Room persistent数据库 – 当没有与表相关的主键时,如何将项列表插入到DB中

我很难将列表项目放到房间里。 列表项称为测量值,其types为Measurement。 列表项没有与数据库相关的主键。 但如果有必要,我可以为ProductModel添加相同的主键。 这是我到目前为止: @Entity(tableName = TABLE_NAME) public class ProductModel { public static final String TABLE_NAME = “product”; @PrimaryKey private int idProduct; private int idCategoryDefault; @Relation(parentColumn = “idProduct”, entityColumn = “idProduct”, entity = SortedAttribute.class) private List sortedAttributes = null; } @Entity public class SortedAttribute { @PrimaryKey private int idProduct; private String reference; @Embedded private […]

房间无法validationAndroid中的数据完整性

MainActivity类 public class MainActivity extends BaseActivity { private AppDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Database creation db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, “Medimap-db”).build(); // Profile profile=new Profile(“rajitha”,”12-2-345″,”male”,”no 345″,”test med”,”test emergency”,”testurl”); // db.profileDao().insert(profile); // Toast.makeText(getApplicationContext(),”success”,Toast.LENGTH_SHORT).show(); new DatabaseAsync().execute(); } private class DatabaseAsync extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); //Perform pre-adding operation […]

如何与Android Room Persistence Library实现多对多的关系?

如何与Android Room Persistence Library实现多对多的关系? 一个用户可能拥有一个或多个设备,一个设备可能由一个或多个用户拥有。 @Entity public class User { public @PrimaryKey Long id; public String userName; } @Dao public interface UserDao { @Query(“select * from user”) List getAllUsers(); @Query(“select * from user where id = :id”) User getUserById(long id); } @Entity public class Device { public @PrimaryKey Long id; public String name; } @Dao […]

我正在使用android分页库,但不是在块中获取数据我一次性获得完整列表

我们使用数据源加载pagedlist的ViewModel类。 public class RecipeListViewModel extends ViewModel { public LiveData<PagedList> mutableLiveData; public void init(RecipeFrom recipeFrom, RecipeDao recipeDao) { mutableLiveData = new LivePagedListBuilder(recipeDao.getRecipeList(),10).build(); } } 这是我的dao,我们以数据源工厂的forms获取数据。 @Dao public interface RecipeDao { @Query(“select * from recipe”) public DataSource.Factory getRecipeList(); } 在我的RecipeListPojo里面,我创建了DiffCallBack。 public static DiffUtil.ItemCallback diffCallback=new DiffUtil.ItemCallback() { @Override public boolean areItemsTheSame(RecipeListPojo oldItem, RecipeListPojo newItem) { return oldItem.getId()==newItem.getId(); } […]

如何将现有的sqlite表迁移到具有VCHAR,TIMESTAMP等数据types的ROOM Db?

在我的旧sqlite表中,我有这些列(id INTEGER PRIMARY KEY AUTOINCREMENT,api_response_json TEXT,api_req TEXT,post_params TEXT,req_type VARCHAR,timestamp TIMESTAMP) 现在我试图将它迁移到Room DB,如下所示: – static final Migration MIGRATION_1_2 = new migration(1,2){ @Override public void migrate(SupportSQLiteDatabase database) { // Create the new table database.execSQL( “CREATE TABLE users_new (id INTEGER PRIMARY KEY AUTOINCREMENT,api_response_json TEXT, api_req TEXT,post_params TEXT,req_type VARCHAR,timestamp TIMESTAMP)”); // Copy the data database.execSQL(“INSERT INTO users_new (id,api_response_json, api_req,post_params,req_type,timestamp) […]

带RxJava2的房间 – (Flowable,Maybe,Repository Pattern)

我在我的应用程序中使用Room作为数据库层,在网络调用中使用Retrofit – 在室内和改造中我都在使用RxJava2(这是我的第一个rxjava项目,所以我在这方面仍然很新手)。 注入数据库,api等我正在使用Dagger 2。 我想进行网络呼叫并将响应从网络添加到数据库。 当不需要再进行网络调用时 – 我想从数据库中获取数据。 我在我的房间存储库中使用Maybe / Flowable时遇到问题。 这是道: @Dao public interface CoinDao { @Query(“SELECT * FROM coin”) Flowable<List> getAllCoins(); @Insert void insert(List coins); @Update void update(Coin… coins); @Delete void delete(Coin… coins); } 这是我的存储库: public class CoinRepository implements Repository { private CoinMarketCapNetworkApi api; private final CoinDao coinDao; public CoinRepository(CoinMarketCapNetworkApi api, CoinDao […]