Android Java:从AsyncTask调用的方法是否也在后台线程中运行?

时间:2016-12-23 18:51:40

标签: java android multithreading android-asynctask

在主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();
}

1 个答案:

答案 0 :(得分:2)

它位于后台线程上,即ASyncTask使用的线程。这是由于纯Java执行语义:在线程上运行的方法调用的方法在同一个线程上执行。

您也可以通过检查this post

中显示的当前主题来验证这一点