刚开始编写的时候在处理PendingIntent时,就是简单的让所打开的intent new出想回到的活动,但是后来发现这样实际上只是新建了一个相同的活动覆盖住了正在进行的活动上,就像写的音乐播放器,在后台的时候若我点击通知栏里的前台服务,会打开了一个新的音乐播放器活动覆盖在正在播放音乐的活动的音乐上面,并不是把后台正在进行的音乐活动调出来。最后解决方法如下:
<pre name="code" class="java">NotificationCompat.Builder builder = new Builder(this);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(new ComponentName(this.getPackageName(),
this.getPackageName() + "." + this.getLocalClassName()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// 点击跳转到主界面
PendingIntent intent_go = PendingIntent.getActivity(this, 5, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.notice, intent_go);
核心是先隐式启动Activity,先setAction,再设置启动模式