public interface AsyncCallback {
void onTaskComplete(String result);
}
public class MyTask extends AsyncTask {
private AsyncCallback callback;
public MyTask(AsyncCallback callback) {
this.callback = callback;
}
@Override
protected String doInBackground(Void... voids) {
// 耗時操作
return "Result from background";
}
@Override
protected void onPostExecute(String result) {
if (callback != null) {
callback.onTaskComplete(result);
}
}
}
public class MainActivity extends AppCompatActivity implements AsyncCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new MyTask(this).execute();
}
@Override
public void onTaskComplete(String result) {
// 更新 UI
textView.setText(result);
}
}
// 協程
lifecycleScope.launch {
val result = withContext(Dispatchers.IO) { doBackgroundWork() }
textView.text = result // 自動切回主線程
}
協程代碼更線性,生命周期感知自動取消,避免內存洩漏。