Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android通知意图创建新实例,而不是打开现有实例_Java_Android - Fatal编程技术网

Java Android通知意图创建新实例,而不是打开现有实例

Java Android通知意图创建新实例,而不是打开现有实例,java,android,Java,Android,如果在最小化应用程序时单击我的通知,则会打开应用程序并重置UI。我希望通知打开现有实例。我一直在尝试使用现有的实例 这是我的通知代码: mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Title")

如果在最小化应用程序时单击我的通知,则会打开应用程序并重置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>


好吧,无论您如何尝试执行此操作,如果活动已最小化,则很可能会重新启动(但有时不会)。您需要为总是重新启动做好准备。实现这一点的方法是,在我们的
onSaveInstanceState()
方法中,存储所有与UI相关的变量。然后,在
onCreate
onRestoreInstanceState()
中,重新初始化这些变量,并根据它们的值重新构建UI。因此,如果使用片段显示应用程序的不同页面,当主活动停止并调用
onSaveInstance()
时,请存储
onSaveInstance()
传递的Bundle对象中哪个片段的名称或编号或某个标识符。重新创建“活动”时,您的代码应该从传递到
onCreate()
的包中获取这些变量,并使用它们显示正确的片段和正确的信息。

您没有指定任何问题,什么不起作用?@Shlublu对不起。它打开一个新实例,我希望它打开应用程序的最小化实例,这样界面就不会重置。好的,我明白了。我不能回答这个问题,但如果你更新你的问题,你将有更多的机会看到答案。好的,谢谢。我更新了标题,出现了以下问题:)。
它会打开一个新实例
,这就是
意图。标记活动和新任务
的作用。