我正在创建一个由无限运行服务组成的应用程序,当禁用该复选框时需要停止该服务。 我目前正在继承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在一个单独的线程上运行)。但有没有办法阻止优先级更改的无限线程/循环?