我有两个通知操作,一个可以停止服务,一个是重新启动。我正在成功启动服务,但我无法使用此代码来阻止它:
PendingIntent show = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent hide = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_CANCEL_CURRENT);
有什么想法?
不是重复的,因为我的问题是关于通知操作的,而不是按钮(我没有问题要停止并开始服务)。
单独的标志不会停止服务。我建议您进行停止操作,而是触发一个自定义的BroadcastReceiver
类,该类在其onReceive()
的内部运行stopService()
方法。让我知道您是否需要更详细地设置类似的帮助。
编辑答案:
将您的 Intent
和 PendingIntent
更改为hide动作:
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" />
希望这会有所帮助!