我想知道 AsyncTask
是否在运行线程的主 Activity (MainActivity.java
) 中使用。
例如,我注意到许多教程在使用 AsyncTask
时,在主类中声明了一个私有(private)类,扩展了 Activity
,而不是为该 AsyncTask
创建独立的 .java
文件 (MyAsyncTask.java
) class
。
但我注意到,当使用独立文件时,我无法运行 runOnUIThread
(),因为它属于 Activity
类,那么我如何能够在扩展 AsyncTask
而不是 Activity
的独立 AsyncTask
(MyAsyncTask.java) 中使用此方法。
最佳答案
那完全没问题。我经常这样做,但这取决于你如何使用它。如果它可以被其他 Activity 使用,那么我给它它自己的类或共享类。但如果它用于单一目的,那么我会将其作为 MainActivity
的内部类。
使其成为内部类的好处是它可以直接访问该类的成员变量。如果您将其设为一个单独的类,那么如果您需要传入 params
(例如 context
或其他变量),则只需为其创建一个构造函数。
我不知道你在做什么,但我不确定你是否需要runOnUiThread()
。您可以在 AsyncTask
文件中创建一个构造函数,并让它接受 context
作为参数以及您需要的任何其他内容。然后您可以在 onPostExecute()
UI
示例
public class MyAsyncTask extends AsyncTask{
private Context context;
public MyAsyncTask(Context context) { // can take other params if needed
this.context = context;
}
// Add your AsyncTask methods and logic
//you can use your context variable in onPostExecute() to manipulate activity UI
}
然后在您的MainActivity
中调用它
MyAsyncTask myTask = new MyAsyncTask(this); //can pass other variables as needed
myTask.execute();
关于android - 我应该在 MainActivity 扩展 Activity 中使用 AsyncTask 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449945/