Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Android 活动堆栈状态_Android_Android Activity_Stack_State - Fatal编程技术网

Android 活动堆栈状态

Android 活动堆栈状态,android,android-activity,stack,state,Android,Android Activity,Stack,State,我当前正在添加从其他应用启动我的应用的选项。 当从另一个应用程序启动时,该应用程序的外观和行为将有所不同。 入口点活动被传递了一个不同的意图动作和一些额外动作。 我需要为其他活动保存这些附加内容,但我无法将它们保存在应用程序中, 因为这将影响从启动器启动的应用程序。 我能想到的唯一解决办法是为每项新活动传递额外信息: intent.putExtras(getIntent()); 因此,请维护当前堆栈的状态。 有更好的办法吗? 谢谢 沙龙 我不这么认为,当应用程序从启动器启动时,您通过getInt

我当前正在添加从其他应用启动我的应用的选项。 当从另一个应用程序启动时,该应用程序的外观和行为将有所不同。 入口点活动被传递了一个不同的意图动作和一些额外动作。 我需要为其他活动保存这些附加内容,但我无法将它们保存在应用程序中, 因为这将影响从启动器启动的应用程序。 我能想到的唯一解决办法是为每项新活动传递额外信息: intent.putExtras(getIntent()); 因此,请维护当前堆栈的状态。 有更好的办法吗? 谢谢 沙龙

我不这么认为,当应用程序从启动器启动时,您通过
getIntent()
获得的意图包含
“android.intent.action.MAIN”
的动作。因此,您可以运行一个检查,看看它是从启动器还是其他应用程序启动的。
然后,您可以在单个SharedReference xml文件中还原extras(如果其他应用程序启动了它)中包含的值,以便所有其他活动都可以方便地访问它们。

我用另一种方式解决了这个问题。 无论何时启动应用程序,都会向先前启动的活动发送一个事件。 然后,堆栈被重定向到一个特殊活动,该活动通知用户该应用程序已在其他地方启动。 此活动有一个按钮可重新启动应用程序。 这样应用程序就不能并行运行。 不确定这是否是最好的解决方案,但它可以工作,并且可以防止不必要的应用程序状态。
Sharon。

使用setter和getter。一旦值被存储在其中,那么你就可以调用你应用程序中的任何地方。但是在intent中向其他活动传递额外值有什么错呢?应用程序中的TechEnd、setter和getter(扩展类)?我知道两个堆栈使用相同的应用程序实例。Aleks G,我希望在全球范围内解决这个问题。谢谢你的回答。我可以在入口点检测到启动模式。问题是pref.文件是共享的。例如,如果用户从启动器启动应用程序,然后从另一个应用程序启动应用程序,然后返回到从启动器启动的应用程序,则从启动器启动的应用程序的行为将与从另一个应用程序启动的应用程序的行为类似。@sharon实际上,您可以将这些值保存在不同的SharedReference xml文件中。一个应用程序可以有多个SharedReference xml文件。检测应用程序如何启动并从相应的xml文件加载值。我仍然需要向每个活动传递一个参数,根据启动模式指示要使用哪个pref.文件。
Because that will affect the app when launched from the launcher.