Android Room Database 应用程序崩溃但未显示任何错误
Posted
技术标签:
【中文标题】Android Room Database 应用程序崩溃但未显示任何错误【英文标题】:Android Room Database app is crashing without showing any error 【发布时间】:2022-01-21 23:57:58 【问题描述】:我正在尝试使用带有 android java 的 Room 数据库库执行非常基本的插入和选择 * 操作。但是当我按下按钮执行查询时,我的应用程序会崩溃,而不会在 logcat 中显示任何错误。
仅当我重新安装应用程序并再次按下插入或选择 * 按钮应用程序崩溃时才会插入数据库行。我是这个库的新手,请指导我正确的代码。
@Entity
public class Users
@PrimaryKey
public int id;
@ColumnInfo(name = "username")
public String uname;
@ColumnInfo(name = "lastname")
public String lname;
public Users(String uname, String lname)
this.uname = uname;
this.lname = lname;
@Dao
@Dao
public interface UsersDao
@Query("select * from Users")
List<Users>getUsers();
@Insert
void insertUser(Users user);
@Database
@Database(entities = Users.class,version = 1)
public abstract class UsersDatabase extends RoomDatabase
public abstract UsersDao usersDao();
调用方法 onCreate()
UsersDatabase db= Room.databaseBuilder(Practice.this,UsersDatabase.class,
"Users").build();
UsersDao dao=db.usersDao();
insert.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
new Thread(new Runnable()
@Override
public void run()
dao.insertUser(new Users("George","Pal"));
).start();
);
ArrayList<String> data=new ArrayList<>();
select.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
new Thread(new Runnable()
@Override
public void run()
List<Users> users=dao.getUsers();
for(Users u: users)
data.add(u.uname+", "+u.lname);
ArrayAdapter<String > adapter=new ArrayAdapter<>(Practice.this, android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
).start();
);
依赖关系
def roomVersion = "2.4.0"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")
我的配置
真机api 30 北极狐【问题讨论】:
【参考方案1】:问题出在线程上。我已经用 AsyncTask 替换了 Threads。
【讨论】:
以上是关于Android Room Database 应用程序崩溃但未显示任何错误的主要内容,如果未能解决你的问题,请参考以下文章
Android - ViewModel、LiveData、Room 和 Retrofit 以及协程放在 kotlin 中
Android Room Database:如何处理实体中的 Arraylist?
获取 android 房间数据库 java.lang.IllegalArgumentException 的以下异常:@androidx.room.Database 未定义元素视图()