asynctask があり、たとえば 60 秒後にキャンセルされるようにしたいと考えています。whileステートメントの中でそれをしなければならないと思いますが、時間を数える方法がわかりません。
質問する
190 次
3 に答える
0
AsyncTaskを開始した後、それへの参照を保持し、60 秒後におそらく UI Thread で cancel を呼び出しますHandler
。メソッド内では、 truedoInBackground
を返す場合に確実に返す必要isCancelled
があります。次のスニペットがお役に立てば幸いです。
public class MyActivity extends Activity {
private Handler mHandler;
private AsyncTask<?, ?, ?> mTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler();
}
@Override
protected void onPostResume() {
super.onPostResume();
mTask = new MyCustomTask();
mTask.execute(1, 2, 3);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mTask.cancel();
}, 60L);
}
}
そして、カスタム タスク内で:
public class MyCustomTask extends AsyncTask<Integer, Float, String> {
@Override
protected String doInBackground(Integer... params) {
String output = "";
for (Integer i : params) {
// Check status for each param
if (isCancelled()) {
return output;
}
...
}
}
@Override
protected void onCancelled(String result) {
// This bit runs on the UI thread
...
}
于 2013-09-02T19:47:50.590 に答える