如果我在应用程序最小化时单击我的通知,则会打开应用程序并重置UI。我想通知打开现有实例。我一直试图让它使用现有的实例。
这是我的通知代码:
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>
答案 0 :(得分:1)
好吧,无论你如何尝试这样做,如果它已被最小化(有时它不是),很可能会重新启动Activity。你需要为它做好准备才能重新开始。解决这个问题的方法是,在我们的onSaveInstanceState()
方法中,存储所有与UI相关的变量。然后,在onCreate
或onRestoreInstanceState()
中,重新初始化这些变量,并从其值中重新构建UI。因此,如果您使用片段显示应用程序的不同页面,当主要活动停止并调用onSaveInstance()
时,请存储名称或编号或其在Bundle对象中{(1)的哪个片段的标识符传递。重新创建活动时,您的代码应该从onSaveInstance()
中传递的包中获取这些变量,并使用它们显示正确的片段,并提供正确的信息。