This question already has an answer here:
Using AsyncTask
(1个答案)
已关闭6年。
我想在我的应用程序中使用
代码:
这是带有说明的骨骼代码概述:
流程图:
这是一个图表,以帮助解释所有参数和类型的去向:
其他有用的链接:
What arguments are passed into AsyncTask<arg1, arg2, arg3>? Slidenerd Android AsyncTask Tutorial: Android Tutorial For Beginners Understanding AsyncTask – Once and Forever Dealing with AsyncTask and Screen Orientation How to pass multiple parameters to AsynkTask how to pass in two different data types to AsyncTask, Android
(1个答案)
已关闭6年。
我想在我的应用程序中使用
AsyncTask
,但是在查找代码片段时遇到了麻烦,该代码片段仅提供了有关工作原理的简单说明。我只希望有一些东西可以帮助我快速恢复速度,而不必再次经历the documentation或很多问答。 最佳答案
AsyncTask
是在Android中实现并行性的最简单方法之一,而无需处理诸如Threads之类的更复杂的方法。尽管它提供了与UI线程的基本并行度,但不应将其用于更长的操作(例如,不超过2秒)。
AsyncTask有四种方法
onPreExecute()
doInBackground()
onProgressUpdate()
onPostExecute()
doInBackground()
最重要,因为它是执行后台计算的地方。代码:
这是带有说明的骨骼代码概述:
public class AsyncTaskTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// This starts the AsyncTask
// Doesn't need to be in onCreate()
new MyTask().execute("my string parameter");
}
// Here is the AsyncTask class:
//
// AsyncTask<Params, Progress, Result>.
// Params – the type (Object/primitive) you pass to the AsyncTask from .execute()
// Progress – the type that gets passed to onProgressUpdate()
// Result – the type returns from doInBackground()
// Any of them can be String, Integer, Void, etc.
private class MyTask extends AsyncTask<String, Integer, String> {
// Runs in UI before background thread is called
@Override
protected void onPreExecute() {
super.onPreExecute();
// Do something like display a progress bar
}
// This is run in a background thread
@Override
protected String doInBackground(String... params) {
// get the string from params, which is an array
String myString = params[0];
// Do something that takes a long time, for example:
for (int i = 0; i <= 100; i++) {
// Do things
// Call this to update your progress
publishProgress(i);
}
return "this string is passed to onPostExecute";
}
// This is called from background thread but runs in UI
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// Do things like update the progress bar
}
// This runs in UI when background thread finishes
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Do things like hide the progress bar or change a TextView
}
}
}
流程图:
这是一个图表,以帮助解释所有参数和类型的去向:
其他有用的链接:
关于android - Android AsyncTask示例和解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25647881/
10-13 06:15