我有方法
private Notification getNotification() {
Activity currentActivity = MyApplication.getApplication().getCurrentActivity();
Intent i = new Intent(currentActivity, SpeechActivationService.class);
i.putExtra(ACTIVATION_STOP_INTENT_KEY, true);
PendingIntent resultPendingIntent = PendingIntent.getActivity(currentActivity, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Action action = new NotificationCompat.Action(R.drawable.ic_mic_off, "Deactivate", resultPendingIntent);
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_mic)
.setTicker("TickerSample")
.setWhen(System.currentTimeMillis())
.setContentTitle("My App Voice Control")
.setContentText("Voice Control is Activated")
.addAction(action)
.build();
return notification;
}
只要服务处于活动状态,就应该发出保持活动状态的通知。通知有一个DEACTIVATE按钮,它可以发送一个Intent,包含在Pending Intent中(不管有什么区别?!)。似乎Intents是处理按钮点击的通知可以采取的唯一行动形式,所以我不能做
stopService(new Intent(this, SpeechActivationService.class));
关于那个停赛。但是当我点击DEACTIVATE时,我的代码onStartCommand()在SpeechActivationService中永远不会被调用。并且服务不会继承onNewIntent()方法。那么当我通过按DEACTIVATE发送此意图时会调用什么方法?
答案 0 :(得分:2)
那么当我通过按DEACTIVATE发送这个意图时会调用什么方法?
什么都不会。您正尝试将getActivity()
PendingIntent
与Intent
一起用于指向服务。这不起作用,你应该在LogCat中收到相应的消息。
如果您将getActivity()
更改为getService()
,则应调用您的onStartCommand()
服务。
答案 1 :(得分:1)
待定意图用于控制应用程序的内容(系统功能使用这些内容)。对于停止服务创建BroadcastReceiver,它将接收待定意图(PendingIntent.getBroadcast()),这反过来将停止您的服务