成功/失败的回调房间操作

时间:2019-11-12 15:01:00

标签: java android database sqlite android-room

我来自iOS世界,是Android开发的新手。 我的问题是这样:

我正在使用Android应用程序,必须将数据保存在本地数据库中。 因此,我为此选择了房间类别。 在iOS中,相当于Room的是CoreData,当我通过它进行一些操作(例如,插入或删除操作)时,我有两个回调:一个用于成功,另一个用于失败。

我在Room系统中看不到此信息,但是我可以执行插入操作并 我不知道此操作何时结束,最重要的是操作是否成功或失败。

现在我只创建Dao和Database类(以及一个实体)

public abstract class LuxuryAppDatabase extends RoomDatabase
{
   public abstract DatabaseLocale dbDao();
}

@Dao
public interface DatabaseLocale
{
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    public void insertChat(ArrayList<Lobby> chats);

    @Query("SELECT * FROM Lobby")
    List<Lobby> getAllUserChat();

    @Query("DELETE FROM Lobby")
    public void deleteAllLoobies();
}

例如,我想做类似onClickListener的事情。

我调用插入查询,并且我有一个具有两种方法的侦听器:成功和失败。

您可以帮助我弄清楚哪里出了问题以及是否可以做类似的事情?

1 个答案:

答案 0 :(得分:0)

您总是可以让您的插入返回一个Long,它代表条目的自动生成的ID:

@Insert(onConflict = OnConflictStrategy.REPLACE)
public long insertChat(ArrayList<Lobby> chats);

此外,Room通常会在发生任何错误时快速失败-这意味着它将引发异常。您调用Room的方法应根据需要处理任何错误异常。