Android - 服务 - 启动命令仅调用一次

标签 android android-service

在我的 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/

相关文章:

android - 左右声道与麦克风录音分离

java - Android弹出菜单填充父级

android - 当 Android 内存不足时,前台服务(不同进程/相同进程)的行为方式

java - 如何在特定时间后刷新 token ?

java - 如何区分鼠标事件和触摸屏事件?

android:为什么textview不会堆叠在FrameLayout中的按钮上

android - 如何在 Google Maps V2 中启用特定路线的交通信息?

android - Android系统uid为0是什么意思

android - 从服务内的线程更新 ProgressDialog

android - onStart() 和 onStartCommand() 仍然在 2.0 及更高版本中调用