Java Android通知意图创建新实例,而不是打开现有实例
如果在最小化应用程序时单击我的通知,则会打开应用程序并重置UI。我希望通知打开现有实例。我一直在尝试使用现有的实例 这是我的通知代码:Java Android通知意图创建新实例,而不是打开现有实例,java,android,Java,Android,如果在最小化应用程序时单击我的通知,则会打开应用程序并重置UI。我希望通知打开现有实例。我一直在尝试使用现有的实例 这是我的通知代码: mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Title")
mBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title")
.setContentText("Tuned in to " + radiostation);
Intent resultIntent = new Intent(getApplicationContext(), RadioChooser.class);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getApplicationContext());
stackBuilder.addParentStack(RadioChooser.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
getApplicationContext(), 0,
resultIntent, 0
);
mBuilder.setContentIntent(resultPendingIntent);
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder.setOngoing(true);
mNotificationManager.notify(1, mBuilder.build());
AndroidManifest.xml:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".RadioChooser"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:configChanges="orientation|keyboardHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name=".MusicPlayer" />
</application>
好吧,无论您如何尝试执行此操作,如果活动已最小化,则很可能会重新启动(但有时不会)。您需要为总是重新启动做好准备。实现这一点的方法是,在我们的onSaveInstanceState()
方法中,存储所有与UI相关的变量。然后,在onCreate
或onRestoreInstanceState()
中,重新初始化这些变量,并根据它们的值重新构建UI。因此,如果使用片段显示应用程序的不同页面,当主活动停止并调用onSaveInstance()
时,请存储onSaveInstance()
传递的Bundle对象中哪个片段的名称或编号或某个标识符。重新创建“活动”时,您的代码应该从传递到onCreate()
的包中获取这些变量,并使用它们显示正确的片段和正确的信息。您没有指定任何问题,什么不起作用?@Shlublu对不起。它打开一个新实例,我希望它打开应用程序的最小化实例,这样界面就不会重置。好的,我明白了。我不能回答这个问题,但如果你更新你的问题,你将有更多的机会看到答案。好的,谢谢。我更新了标题,出现了以下问题:)。它会打开一个新实例
,这就是意图。标记活动和新任务
的作用。