停止无限服务?

时间:2014-07-28 18:12:18

标签: android multithreading service infinite-loop

我正在创建一个由无限运行服务组成的应用程序,当禁用该复选框时需要停止该服务。 我目前正在继承Myservice类的intentservice类,但问题是它没有停止点击按钮(调用stopservice)并继续运行,我已经尝试了日志和ondestroy()确实被调用但服务没有停止。 我也试过继承服务类但仍然相同。我发布下面的代码。 来自MainActivity:`service.setOnPreferenceClickListener(new OnPreferenceClickListener(){

        @Override
        public boolean onPreferenceClick(Preference preference) {
            Intent intent= new Intent(MainActivity.this,Myservice.class);
            if(sp==false)
            { Log.d("service1", "Startservice invoked");
                startService(intent);
            sp=true;
            }
            else if(sp==true)
                { 
                Log.d("service1", "Stopservice invoked");
                stopService(intent);
                sp=false;
                }
            return false;
        }
    });`

sp只是一个静态标志,用于检查是否单击了复选框,初始值为false。(isenabled()方法给出了问题) 我的服务代码:

    public class Myservice extends IntentService {

public Myservice() {
    super("My Service");
}

@Override
protected void onHandleIntent(Intent intent) {
     while(true){
         Log.d("service1", "Service is running");
         try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }}}

我知道为什么这一切都发生了(onhandleintent在一个单独的线程上运行)。但有没有办法阻止优先级更改的无限线程/循环?

0 个答案:

没有答案