我有两个通知操作,一个用于停止服务,另一个用于重新启动服务。 我正在成功启动该服务,但我无法使用此代码阻止它:
PendingIntent show = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent hide = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_CANCEL_CURRENT);
有什么想法吗?
不重复,因为我的问题是关于通知操作,而不是按钮(我没有问题让我的按钮停止并启动服务)。
答案 0 :(得分:4)
仅靠那面旗帜不会停止服务。我建议您执行停止操作,而不是触发自定义BroadcastReceiver
类,该类在stopService()
内运行onReceive()
方法。如果您需要帮助我更详细地设置类似的东西,请告诉我。
编辑回答:
将隐藏操作的Intent
和PendingIntent
更改为:
Intent intentHide = new Intent(this, StopServiceReceiver.class);
PendingIntent hide = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intentHide, PendingIntent.FLAG_CANCEL_CURRENT);
然后像这样StopServiceReceiver
,ServiceYouWantStopped.class
是要停止的服务:
public class StopServiceReceiver extends BroadcastReceiver {
public static final int REQUEST_CODE = 333;
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, ServiceYouWantStopped.class);
context.stopService(service);
}
}
确保您在清单文件中声明了您刚刚创建的BroadcastReceiver
:
<receiver
android:name=".StopServiceReceiver"
android:enabled="true"
android:process=":remote" />
希望这有帮助!