私は以下のようなコードを書きました
パブリッククラスSplashScreenはBaseActivityを拡張します{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
new DownloadPlistTask().execute("background","Progress","yes");
}
private class DownloadPlistTask extends AsyncTask<String,String,String>{
protected String doInBackground(String... dummy){
return compareLocRemPlist();
}
protected void onProgressUpdate(String... progress){
//some code here.
}
protected void onPostExecute(String result){
//handle return type from doInBackground.
}
public String compareData(){
final Timer timer = new Timer();
timer.schedule( new TimerTask(){
public void run(){
//code regarding webservices.
if(boolValue){
//if the boolValue from the webservice is true,cancel the timer.
timer.cancel();
}
},5*60*1000,5*60*1000);
return "finish";
}
}
}
上記のonCreate()iamからのコードでは、doInBackgroundiamでAsyncTaskdoInBackgroundを呼び出し、compareData()という名前のメソッドを呼び出しています。compareData()メソッドでは、タイマーを使用してiam。タイマーは、Webサービスのリクエストを送信します。 boolean value、trueの場合はfinishを返す必要があります。falseの場合はfinishを返したくないので、compareData()メソッドにとどまり、trueになるまで5分ごとにリクエストを送信する必要があります。タイマーが5分間待機しているとき、この間、タイマーが実行され、戻り値の終了後のステートメントがdoInBackgroundに戻り、コントロールはonPostExecute()に移動しますが、バックグラウンドでタイマーが実行されます。タイマーをキャンセルしたときに終了を返すにはどうすればよいですか