AsyncTask不一定必须是一个内部类,但是通常情况下它被封装在Activity或Fragment中。如果您是在Activity中使用AsyncTask,您可以选择将其放在Activity外部作为一个公共类。如果您需要在多个Activity或Fragment中重复使用AsyncTask,您可以将其放在一个单独的类文件中。
示例代码:
public class MyAsyncTask extends AsyncTask {
private Context context;
public MyAsyncTask(Context context) {
this.context = context;
}
@Override
protected Void doInBackground(Void... params) {
// 在后台执行任务
return null;
}
@Override
protected void onPostExecute(Void result) {
// 在UI线程上更新UI
Toast.makeText(context, "任务执行完成", Toast.LENGTH_SHORT).show();
}
}
在Activity中调用MyAsyncTask:
public class MainActivity extends AppCompatActivity {
private Button btnRunTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnRunTask = findViewById(R.id.btn_run_task);
btnRunTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new MyAsyncTask(MainActivity.this).execute();
}
});
}
}