我有一个Sticky Service B,它是从服务A开始的。服务A在启动服务B后很快就完成了。我想从活动C中停止服务B.我该怎么办?
This链接提供了一种停止来自其他活动的服务的方法,但在这种情况下,服务是由活动启动的。
答案 0 :(得分:0)
您可以考虑使用BroadcastReceiver将事件传递到服务并让它自行终止。
答案 1 :(得分:0)
您需要从您的活动中致电stopService
。只要您在意图中提供有效的上下文,服务是由活动还是其他服务启动并不重要。如果服务未绑定到任何客户端,则调用stopService
将停止服务。
stopService(new Intent(ActivityC.this, ServiceB.class));
如果您希望服务自行停止,请在服务中调用stopSelf()
。
答案 2 :(得分:0)
http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)
1.create function handleStart()
<?php
function die_on_error($errno, $errstr, $errfile, $errline, $errcontext){
echo "\n\nThere was an error. Today is a good day to die.";
echo "\n\n\$errno: $errno";
echo "\n\n\$errstr: $errstr";
echo "\n\n\$errfile: $errfile";
echo "\n\n\$errline: $errline";
echo "\n\n\$errcontext: ";
var_dump($errcontext);
die();
}
if (is_null(set_error_handler('die_on_error'))){
die("\n\nCould not set an error handler.");
}
2.override onStartCommand
private void handleStart(){
//write your code here
}
3.call stopService
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
if(startId == Service.START_STICKY) {
handleStart();
return super.onStartCommand(intent, flags, startId);
}else
return Service.START_NOT_STICKY;
}