一定期間ごとに Web サービスを繰り返し呼び出す方法を教えてください (たとえば、5 分ごとに Web サービスを呼び出したい場合)。私のアプリには、Web サービスを何分後に更新する必要があるかをユーザーが選択できるスピナーがあります。カウントダウンタイマーを使用して書いたコードは次のとおりです。
ここでは、スピナーで「更新しない」が選択されたときにタイマーを停止するようにロジックを書きました。最初のアイテム以外のアイテムを選択すると、最初のアイテムを選択すると (つまり、更新しない)、タイマーは停止しません。
private String[] refreshtimes = { "do not refresh","1 minute Refresh", "5minute Refresh",
"15 minute Refresh", "30 minute Refresh", "45 min Refresh",
"60 minute Refresh" };
sp_refresh = (Spinner) findViewById(R.id.refresh);
ArrayAdapter<String> spdptr = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_spinner_item,
refreshtimes);
sp_refresh.setAdapter(spdptr);
sp_refresh.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
if(position!=0 )
{
int time=0;
switch (position) {
case 1:
time=1;
break;
case 2:
time=5;
break;
case 3:
time=15;
break;
case 4:
time=30;
break;
case 5:
time=45;
break;
case 6:
time=60;
break;
default:
break;
}
counter = new MyCount(time*1000,1000);
counter.start();
}
else if(position==0&&counter!=null)
{
counter.cancel();
counter=null;
Toast.makeText(getApplicationContext(), "u r in elsee",10000).show();
}
}
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// tv.setText("done!");
callservice();
Toast.makeText(getApplicationContext(), "hi..",10000).show();
//onCreate(savedInstanceState);
this.start();
}
@Override
public void onTick(long millisUntilFinished) {
// tv.setText("”Left: " + millisUntilFinished/1000);
Toast.makeText(getApplicationContext(), "Left: " + millisUntilFinished/1000,10000).show();
}
}