我想知道 AsyncTask
在主要活动中使用( MainActivity.java
)运行线程。
例如,在使用 AsyncTask
它们在扩展 Activity
而不是建立一个独立的 .java
为此提交文件 AsyncTask
( MyAsyncTask.java
) class
.
但我注意到,当使用独立文件时,我无法运行 runOnUIThread
()因为它属于 Activity
类,那么如何在独立的 AsyncTask
(myasynctask.java)它扩展了 AsyncTask
而不是 Activity
.
4条答案
按热度按时间eanckbw91#
那完全没问题。我经常这样做,但这取决于你如何使用它。如果它可能被其他人使用
Activities
然后我给它自己的类或者一个共享的类。但如果它是为一个单一的目的,那么我会使它成为MainActivity
.使其成为内部类的好处是它可以直接访问该类的成员变量。如果你把它作为一个单独的类,那么你只需要为它创建一个构造函数,如果你需要传入的话
params
例如context
或其他变量。我不知道你到底在做什么,但我不确定你需要什么
runOnUiThread()
. 您可以在AsyncTask
归档并接受context
作为一个情妇和任何你需要的东西。然后你可以更新UI
在onPostExecute()
例子那就把它叫进来
MainActivity
```MyAsyncTask myTask = new MyAsyncTask(this); //can pass other variables as needed
myTask.execute();
vq8itlhq2#
一般来说,我们
AsyncTask
在同一个类中,以更清楚地表明它仅由同一活动使用。如果你想要的话
AsyncTask
要被多个活动重用,只需创建一个独立的类并通过构造函数从活动传递参数您可以在asynctask中创建接口,将asynctask的响应发送到下面的活动,并在需要时调用lister方法。我已经叫它了
onPostExecute()
:在activity类中,您需要实现该侦听器并编写代码来更新该实现方法中的textview:
您可以编写下面的代码,在需要时在活动中启动asynctask,如button click事件或else
这就是你想要的东西!
xkftehaa3#
我相信在大多数教程中,他们选择的是最容易理解/阅读的,而不是实际上最好的。
使用一个内部类,您可以保持活动的变量可用,这会更简单。
一般来说,您应该尽可能多地封装异步任务,这样您就可以从代码中的任何其他点重用它们。
qni6mghb4#
对。您可以创建
AsyncTask class
在你的MainActivity.java
.