【问题标题】:How to stop service itself?如何停止服务本身?
【发布时间】:2012-01-25 15:21:12
【问题描述】:

例如,我在服务中有一些 int myInt,如果 myInt =1 我想停止服务本身。所以服务应该会自动停止。

@Override 
    public void onCreate() {
          super.onCreate();
              if(myInt==1){
                 // need code for stopping service here
              }
        } 

【问题讨论】:

  • 好的,我认为您将不得不发布从您的活动启动服务的代码.. @Adam
  • 你是否尝试过 onStart() 中的 stopSelf() 或 onStartCommand() 方法,如果没有尝试这个。

标签: android service int


【解决方案1】:

更新

显然,由于服务生命周期的性质,我们无法停止服务。如果您也可以在OnStartCommand 中检查您的状况,您可以尝试在那里调用 stopself() 吗?

更新 2

对于示例代码:您可以尝试在单独的线程上运行stopSelf(),如本文所述:how can i stop my RECEIVE_BOOT_COMPLETED service

【讨论】:

  • 是的,这个 onCreate 的服务。昨天我尝试将 stopSelf() 放入我的代码中,但没有成功。
  • 谢谢。编辑了答案.. @Adam
  • 我尝试将我的 if 条件添加到 OnStartCommand 并且如果条件被接受我尝试调用 stopSelf(),但它仍然不起作用。
  • 我总是从其他 Activity 启动服务,如果两个 int 值 = 1(firstInt==1 && secondInt==1) 我需要停止服务,但我需要停止服务,因为如果我从那个活动中停止它,我会添加很多代码。停止服务对我来说是最好的解决方案。请给我一些代码示例,请问我该怎么做?
  • 1) 我认为您应该首先添加一些有关在何处/如何启动服务的详细信息? 2)stopSelf()可能不会立即返回并停止服务。您如何检查您的服务是否仍在运行?是什么让您认为“它不起作用”?
【解决方案2】:

使用“this.stopSelf()”:

@Override 
public void onCreate() {
      super.onCreate();
          if(myInt==1){
             this.stopSelf();
          }
    }

如果服务没有通过仍然被绑定和/或作为 STICKY (START_STICKY) 启动而保持活动状态,这将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2017-03-17
    • 1970-01-01
    • 2014-12-15
    • 2012-02-27
    • 2013-05-03
    相关资源
    最近更新 更多