Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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,我已将项目构建为.apk文件,然后将其安装到设备中。 我的步骤是: 1) 按下应用程序抽屉中的图标,主活动已启动 2) 按一些操作转到第二个活动 3) 按主页按钮 4) 再次按图标 我的期望是第二个活动应该恢复,但它只是重新启动主要活动 如何修复我已尝试将启动模式设置为的问题 android:launchMode=“singleTask” android:launchMode=“singleTop” 但它不起作用 这是我在Manifest.xml文件中的设置 <ac

我已将项目构建为.apk文件,然后将其安装到设备中。 我的步骤是:

1) 按下应用程序抽屉中的图标,主活动已启动

2) 按一些操作转到第二个活动

3) 按主页按钮

4) 再次按图标

我的期望是第二个活动应该恢复,但它只是重新启动主要活动

如何修复我已尝试将启动模式设置为的问题

android:launchMode=“singleTask”

android:launchMode=“singleTop”

但它不起作用

这是我在Manifest.xml文件中的设置

            <activity
        android:name=".auction.MySplashScreen"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
            </activity>


查看清单文件,您的问题是由您设置的android:launchMode属性造成的。您应该将其设置为默认值,也可以避免设置。通过这种方式,您可以获得所需的行为。

在清单文件中,如果您已声明任何活动,且意图过滤器具有操作主启动器和类别启动器,那么这就是您的第一个活动或主启动器启动应用程序的活动

现在,在任何android智能手机应用程序中,都从两个方面开始

1) 主屏幕/启动器屏幕
行为:现在,如果您按下此处的任何图标,那么启动器将看到应用程序的清单文件,并查找具有intent action launcher和main的活动,然后它将调用该活动

2) 最近的应用程序/长按主页按钮
行为:您最近打开的任何应用程序都将显示在此处,Android将拥有该应用程序的所有跟踪记录,当您按下任何图标时,该应用程序将显示您浏览的最新活动


因此,您的行为是默认行为,并且没有任何错误/故障。应该是这样的


您问题的解决方案:


如果你想在应用程序生命周期内只显示一次启动屏幕,那么你需要使用一些布尔值并将其存储在SharedReferences中,并使用它来检查你是否是第一次。如果不是第一次,则直接使用intent调用下一个活动。

你的建议是有道理的,但我仍然不理解其中一个事情如果我用调试器运行应用程序,这种情况不会发生,我真的不明白为什么?