gpt4 book ai didi

android - 我应该在 MainActivity 扩展 Activity 中使用 AsyncTask 类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:15 25 4
gpt4 key购买 nike

我想知道 AsyncTask 是否用于运行线程的主 Activity (MainActivity.java)。

例如,我注意到许多使用 AsyncTask 的教程,他们在扩展 Activity 的主类中声明了一个私有(private)类,而不是创建一个独立的 .java 文件为 AsyncTask (MyAsyncTask.java) class

但我注意到,当使用独立文件时,我无法运行 runOnUIThread() 因为它属于 Activity 类,所以我将如何能够在扩展 AsyncTask 而不是 Activity 的独立 AsyncTask (MyAsyncTask.java) 中使用此方法。

最佳答案

那完全没问题。我经常这样做,但这取决于你如何使用它。如果它可能被其他 Activities 使用,那么我给它自己的类或共享类。但如果它是出于单一目的,那么我会将其作为 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/15409912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com