Android-Service-On-Start命令只调用一次
在activity oncreate方法中,我使用OnStartCommand()调用了一个服务。我的要求是,当用户处于同一活动中时(当活动可见时),一组代码应该重复运行。(例如..我应该进行一次web服务调用并获得响应,并在定期之后根据响应执行一些操作) 我将这组代码放在这个方法中Android-Service-On-Start命令只调用一次,android,android-service,Android,Android Service,在activity oncreate方法中,我使用OnStartCommand()调用了一个服务。我的要求是,当用户处于同一活动中时(当活动可见时),一组代码应该重复运行。(例如..我应该进行一次web服务调用并获得响应,并在定期之后根据响应执行一些操作) 我将这组代码放在这个方法中 @Override public int onStartCommand(Intent i, int flags , int startId){ // Code to be repeate
@Override
public int onStartCommand(Intent i, int flags , int startId){
// Code to be repeated
return Service.START_STICKY;
}
但是,这只是执行一次。如何使它从用户访问此页面到离开此页面时重复运行???您可以使用计时器执行固定周期的方法 请参见下面的教程: CountDownTimer.cancel()方法似乎不起作用 我建议你改用定时器。它更灵活,可以随时取消。可能是这样的:
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);
}});
}
}
使用CountDownTimer CountDownTimer t=new CountDownTimer(Long.MAX_值,1000){public void onTick(Long millisuntiltfinished){Log.d(“test”,“Timer tick”);}public void onFinish(){Log.d(“test”,“Timer last tick”);t.start();}.start();由于当用户查看此活动时,我需要在后台进行web服务调用,因此我是否会遇到内存问题或强制关闭?