android如何停止 service 当 button 在 layout 的另一个 activity 按下

发布时间: 2016/9/27 22:32:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 service ,运行东西每隔几秒钟,然后一直睡到某 time 已经过去。并不理想,但我的目的有效。我想要 buttonlayout NotifActivity 的启动和停止 service 称为 NotifService 的要求。在这里基本上是 NotifService 有什么︰

public class NotifService extends IntentService {
public NotifService() {
    super("NotifService");
}

@Override
protected void onHandleIntent(Intent intent) {
    while(true){
        try {
            checkcalc();
            Thread.sleep(1000);

        } catch (InterruptedException e) {
            // Restore interrupt status.
            Thread.currentThread().interrupt();
        }
    }
}
 public void checkcalc () {
    //some code I am trying to run
}

public void notifSend(String num){

    //Sends a notification
    }
}

被调用来启动的 NotifActivity 位 service :

public void sendNotification(View view) {
    Intent serviceIntent = new Intent(this, NotifService.class);
    startService(serviceIntent);

}

我现在会怎么阻止 service ? stopService(serviceIntent) 似乎无效,我要做什么。

谢谢你 !

解决方法 1:

这是一个简单的解决方法解决方案通过使挥发性的静态变量的使用和检查继续条件在某些行在你 serviceservice 继续应检查︰

class MyService extends IntentService {
public static volatile boolean shouldContinue = true;
public MyService() {
    super("My Service");
}

@Override
protected void onHandleIntent(Intent intent) {
    doStuff();
}

private void doStuff() {
    // do something 

    // check the condition
    if (shouldContinue == false) {
          stopSelf();
          return;
      }

     // continue doing something

     // check the condition
     if (shouldContinue == false) {
         stopSelf();
         return;
     }

        // put those checks wherever you need
    }
}

和在你 activity 这样做是为了阻止你 service

MyService.shouldContinue = false;
官方微信
官方QQ群
31647020