java - 如何从一个线程调用一个对象到另一个线程?
问题描述
我在这个类中调用了 Activity
在我打开到数据库的连接中FilmActivity.java
有一个名为OpenDbConnection
extends的内部类AsyncTask
OpenDbConnection
public AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "FilmDatabase").fallbackToDestructiveMigration().build();
其中FilmActivity.java
有一个名为 setFavButton 的方法
public void setFavButton(View view) {
String pos = getStringFromIntent("position");
Toast.makeText(this, pos, Toast.LENGTH_SHORT).show();
ImageView favButton = findViewById(R.id.activity_film_fav_button);
if (isPressedButton) {
favButton.setImageResource(R.drawable.ic_like);
isPressedButton = false;
Toast.makeText(this, "Removed From Favourite Film", Toast.LENGTH_SHORT).show();
} else {
favButton.setImageResource(R.drawable.ic_like_activated);
isPressedButton = true;
Toast.makeText(this, "Added To Favourite Film", Toast.LENGTH_SHORT).show();
}
filmList.get(Integer.valueOf(pos)).setFavFilm(String.valueOf(isPressedButton));
}
使用 onClick 连接到布局
<ImageView
android:id="@+id/activity_film_fav_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/ativity_film_text_header"
android:onClick="setFavButton"
android:paddingTop="4dp"
android:src="@drawable/ic_like" />
我希望当用户单击此图像时(调用 setFavButton 时)他更改照片并且他应该更新数据库中的某些内容我在数据库中有更新的方法但是,我如何调用从内部类到 FilmActivity 调用 db 的数据库对象班级
我试图从 setFavButton 中的内部类创建对象但是应用程序崩溃了,它说我可以在主线程中调用数据库
setFavButton 方法应该是这样的
public void setFavButton(View view) {
String pos = getStringFromIntent("position");
Toast.makeText(this, pos, Toast.LENGTH_SHORT).show();
ImageView favButton = findViewById(R.id.activity_film_fav_button);
if (isPressedButton) {
favButton.setImageResource(R.drawable.ic_like);
isPressedButton = false;
Toast.makeText(this, "Removed From Favourite Film", Toast.LENGTH_SHORT).show();
} else {
favButton.setImageResource(R.drawable.ic_like_activated);
isPressedButton = true;
Toast.makeText(this, "Added To Favourite Film", Toast.LENGTH_SHORT).show();
}
filmList.get(Integer.valueOf(pos)).setFavFilm(String.valueOf(isPressedButton));
// here should update the list in Database
db.userDao().updateFilmList(filmList);
}
但是崩溃了!!因为我不能在主线程中使用数据库
我应该怎么办 ???