重新启动“家庭”按钮上的活动,但是…只是第一次

重新启动“家庭”按钮上的活动,但是…只是第一次

我正在开发的应用程序在第一次安装时就有一个奇怪的行为。如果用户第一次正常退出应用程序,它将永远按其应有的方式运行。如果用户在安装应用程序后第一次使用HOME按钮,它会将应用程序视为应该再次重新启动主屏幕,并在旧的应用程序前面启动一个新的活动版本。

所以现在有两个问题。我似乎无法解决这两个问题。

  1. 当用户第一次按下主按钮时,不要关闭应用程序。
  2. 当应用程序这样做时,不要让多个版本的应用程序启动(LaunchMode在这里有一点帮助,但是第一个组件仍然会触发)。

我没有launchMode属性在定义为Anything的清单文件中。因此,不应该有任何奇怪的行为作为这一结果。我已经试验过launchmode属性,以查看我是否能够让它按照预期的方式运行,但是这里似乎有更多的内容,而不仅仅是正确地启动活动。据我所知,没有理由在第一次按HOME按钮时关闭应用程序本身。

我不使用onUserLeaveHint在应用程序中也是如此。我不得不通过对这个项目进行一次搜索来再次确定。因此,似乎根本没有任何覆盖主按钮的尝试。

即使在重新启动电话之后,Home按钮也会再次正常运行。不确定是什么原因导致初始安装将HOME按钮视为从零开始启动应用程序的标志。

一旦用户第一次退出应用程序,问题就会永久解决。对我该去哪有什么想法吗?

最近在应用程序中进行了搜索,以确定它是否只是因为onUpgrade()组件的SQLite数据库方法导致一些奇怪的行为。

@Overridepublic void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) {
                if (newVersion > oldVersion) {

           }
       }

或者在另一个位置,如果我将APK的较新版本传递给已经具有比当前版本低一个版本的设备,则可能会触发来自清单文件的更新。然而,代码的这一部分并没有让我相信它会影响到与发射序列相关的任何东西。

下面为应用程序中当前使用的内容提供了清单文件(更改了名称)。

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<uses-permission android:name="com.android.vending.CHECK_LICENSE"></uses-permission>

<uses-permission android:name="android.permission.BLUETOOTH"/>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>


<uses-permission android:name="android.permission.VIBRATE" android:required="false"/>

<uses-permission android:name="android.permission.CAMERA" android:required="false"/>

<uses-feature android:name="android.hardware.camera" android:required="false"/>

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

30秒到达战场
浏览 260回答 3
3回答

德玛西亚99

为什么这是行为,不知道。但我知道这个习俗Launcher有具体launchModes准备好了。例如,ADW.Launcher:android:clearTaskOnLaunch="true"android:launchMode="singleTask"AndroidSDK示例中的家庭应用程序:android-sdk\samples\android-16\Home\AndroidManifest.xmlandroid:launchMode="singleInstance"引用CommonsWare的话:如何防止自定义家庭启动程序重新启动活动?我将使用SDK中的Home示例应用程序,它使用singleInstance。奇怪的是,AOSP启动程序使用SingleTask

狐的传说

看起来这个问题是由应用程序的不同实例引起的。可能第一个实例是在安装程序的任务下启动的,而第二个实例是在用户单击应用程序图标时在自己的任务下启动的。在用户看来,他/她继续使用该应用程序,但实际上他在此时再次启动了该应用程序。如果您想让应用程序只在自己的任务中运行,一种可能的方法是添加android:allowTaskReparenting="true"你的Android宣言的应用级别。一旦应用程序图标在安装后第一次被点击,您的应用程序将被移动到分离的任务中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android