我正在开发一个需要使用AsyncTask进行网络连接的Android应用程序。我从主线程调用它,因此doInBackground方法运行并返回到onPostExecute方法。在执行完onPostExecute方法后,我想要将一个值从被调用的活动返回到活动中,因为我需要在该特定活动中执行一些操作,这些操作需要从onPostExecute方法返回的值。我该如何解决这个问题?我该如何从onPostExecute方法返回一个值?
谢谢您的帮助。
谢谢您的帮助。
当然,您可以在Activity类中创建一些实例变量(或使用监听器模式)来存储返回的结果,并在onPostExecute方法准备好时使用。问题是,在项目构建时,您永远不知道这个结果何时在onPostExecute方法之外准备好,因为它实际上是在应用程序运行时确定的。除非您编写一些等待机制连续轮询结果,这会牺牲AsyncTask的好处,例如内置的API AsyncTask.get(),它使AsyncTask与UI线程同步运行并将结果返回给Activity。我必须在那个特定的活动中执行一些操作,这需要返回自onPostExecute方法的值。我该怎么解决这个问题?
AsyncTask
中获取返回值。public class MainActivity extends Activity {
public String retunnumfromAsyncTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layouttest);
new Asyntask(this).execute();
}
public class Asyntask extends AsyncTask<Void, Void, String> {
private final Context Asyntaskcontext;
public Asyntask(Context context){
Asyntaskcontext = context;
}
@Override
protected void onPostExecute(String result) {
MainActivity mainactivity = (MainActivity) Asyntaskcontext;
mainactivity.retunnumfromAsyncTask = result;
super.onPostExecute(result);
}
}
}