我已经制作了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;
}
问题
我想通过停止按钮停止服务,但它会暂停一段时间并重新开始。 我不知道我做错了什么,又是什么让服务重新开始。
请帮我停止服务。
注意:我在一个单独的进程中运行我的服务。
答案 0 :(得分:0)
根据代码,mIsBound
可能是Activity
的局部变量。当您停止活动并重新启动它时,它将具有默认值boolean即false,因此会一次又一次地调用bindService
。您需要做的是将其设为静态变量或将服务绑定状态存储在SharedPreferences
中并从中读取值。