在主Activity上,我执行以下操作以使这些方法在后台线程中运行。
private void doInBackground() {
final Activity a = this;
AsyncTask.execute(new Runnable() {
@Override
public void run() {
bindDb();
new MessageSynchronizer(a);
NotifHelper.cancelNotifications(a);
MessageHelper.updateMyLastSeen();
versioning();
}
});
}
然后我想知道上面调用的以下方法是在UiThread中运行还是在上面调用它的线程中运行。
private void bindDb() {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
databaseHelper.getWritableDatabase();
databaseHelper.getDatabaseName();
databaseHelper.close();
}
答案 0 :(得分:2)
它位于后台线程上,即ASyncTask
使用的线程。这是由于纯Java执行语义:在线程上运行的方法调用的方法在同一个线程上执行。
您也可以通过检查this post。
中显示的当前主题来验证这一点