如何停止绑定本地意图服务

时间:2016-01-12 06:31:46

标签: android intentservice android-service-binding

我已经制作了Intent服务,并且设计它的方式是它有能力在被操作系统杀死时自动重启,但是如果被用户停止它必须停止。

每件事情都很顺利。但是当我尝试实现消息处理程序和绑定技术时出现问题。

我做了什么

我唯一的目的是从服务中获取状态(在我的情况下是意图服务)并更新我的观点。为此,我实现了Message处理程序并开始绑定服务。

我以这种方式绑定我的服务

 //This is my interface to get specific call back in activity
        mReceiver = new DownloadResultReceiver(new Handler());
        mReceiver.setReceiver(ListSuitClass.this);
        serviceIntent = new Intent(DownloadService.ALARM_SERVICE);
        serviceIntent.setClass(ListClass.this, DownloadService.class);
        serviceIntent.putExtra("receiver", mReceiver);
        serviceIntent.putExtra("requestId", 101);
        startService(serviceIntent);

    }
    if (!mIsBound) {
        bindService(serviceIntent, mConnection, BIND_DEBUG_UNBIND);
        mIsBound = true;
    }

问题

我想通过停止按钮停止服务,但它会暂停一段时间并重新开始。 我不知道我做错了什么,又是什么让服务重新开始。

请帮我停止服务。

  

注意:我在一个单独的进程中运行我的服务。

1 个答案:

答案 0 :(得分:0)

根据代码,mIsBound可能是Activity的局部变量。当您停止活动并重新启动它时,它将具有默认值boolean即false,因此会一次又一次地调用bindService。您需要做的是将其设为静态变量或将服务绑定状态存储在SharedPreferences中并从中读取值。