在我的 Activity oncreate 方法中,我使用 OnStartCommand() 调用了一个服务。我的要求是当用户在同一个Activity上(当Activity可见时),一组代码应该重复运行。 (示例 .. 我应该进行 Web 服务调用并获取响应并在定期间隔后根据响应执行一些操作)。
我已经把这组代码放在这个方法里了。
@Override
public int onStartCommand(Intent i, int flags , int startId){
// Code to be repeated
return Service.START_STICKY;
}
但是,这只会执行一次。如何让它从用户来到这个页面到他离开这个页面重复运行??
最佳答案
CountDownTimer.cancel() 方法似乎不起作用。
我建议您改用 Timer。它更加灵活,可以随时取消。可能是这样的:
public class MainActivity extends Activity {
TextView mTextField;
long elapsed;
final static long INTERVAL=1000;
final static long TIMEOUT=5000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextField=(TextView)findViewById(R.id.textview1);
TimerTask task=new TimerTask(){
@Override
public void run() {
elapsed+=INTERVAL;
if(elapsed>=TIMEOUT){
this.cancel();
displayText("finished");
return;
}
//if(some other conditions)
// this.cancel();
displayText("seconds elapsed: " + elapsed / 1000);
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL);
}
private void displayText(final String text){
this.runOnUiThread(new Runnable(){
@Override
public void run() {
mTextField.setText(text);
}});
}
}
关于Android - 服务 - 启动命令仅调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890074/