【问题标题】:Android calling a method from a different class from within an AsyncTaskAndroid 从 AsyncTask 中的不同类调用方法
【发布时间】:2015-09-17 15:19:19
【问题描述】:

在 Asynctask 中我调用一个方法,我的意思是在 doInBackgroud() { ...code goes here ... } 中,我调用的方法是 ..

A) .. 在异步任务类中

B) .. 在不同的类别中

这个方法调用是否还在异步任务的线程中执行?

我想知道,因为人们常说“只有doInBackgroud() { ...code goes here ... } 中的代码在不同的线程中执行。

【问题讨论】:

    标签: java android multithreading android-asynctask


    【解决方案1】:

    doInBackground() 内部进行的调用(直接或间接)会自动在后台线程中运行。

    有一些方法可以强制某些代码在主 UI 线程中运行(例如,请参阅 this question),但必须明确执行。

    【讨论】:

      【解决方案2】:

      是的,方法调用是在异步任务的线程中执行的。如果无法调用其他类的方法,异步任务将毫无用处。 此外,如果 doInBackground 方法(经常用于发出 Web 请求)将在主线程中运行,Android 将抛出异常 (NetworkOnMainThreadException)。

      【讨论】:

        【解决方案3】:

        我想知道,因为人们常说“只有 doInBackgroud() { ...code goes here ... } 中的代码在不同的线程中执行。

        当您的应用程序启动时,会创建一个称为 UI 线程(也称为“主”线程)的线程。该线程将所有事件分派到应用程序上的小部件和其他内容。

        AsyncTask 将在 UI 线程上执行 onPreExecuteonPostExecute。另一方面,doInBackground() 在后台线程上调用,完成后将返回主线程。

        【讨论】:

          猜你喜欢
          • 2016-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多