我正在开发的应用程序在第一次安装时会有奇怪的行为。如果用户第一次正常退出应用程序,则它将永远按照应该的方式工作。如果用户在安装应用程序后第一次使用主屏幕按钮,则它会将应用程序视为应该重新启动主屏幕并在旧版本的活动前启动新版本。
因此,实际上存在两个问题。我似乎无法解决它们两个。
我也没有在应用程序内使用
即使重新启动手机,主屏幕按钮也会再次正常工作。不确定导致初始安装将主屏幕按钮视为启动应用程序的标志的原因是什么。
一旦用户第一次退出应用程序,问题就永远得到解决。您认为我应该在哪里查找? 最近进行了应用程序内搜索,以查看是否由于 SQLite 数据库方法的 onUpgrade() 组件而触发了一些奇怪的行为。
- 当用户点击主屏幕按钮以退出首次安装的应用程序时,使应用程序保持不关闭。
- 在这样做时,防止多个应用程序版本启动(launchMode 在这里有所帮助,但第一个组件仍然会触发)。
launchMode
属性为任何值。因此,不应出现任何奇怪的行为。我已经尝试使用应用程序的 launchmode
属性进行了实验,以查看是否可以使其按预期方式工作,但这里似乎还有更多要考虑的。在我看来,当按下主屏幕按钮时,应用程序没有理由自己关闭第一次。我也没有在应用程序内使用
onUserLeaveHint
。我必须再次通过对项目进行搜索来确保。因此,似乎根本没有尝试覆盖主屏幕按钮。即使重新启动手机,主屏幕按钮也会再次正常工作。不确定导致初始安装将主屏幕按钮视为启动应用程序的标志的原因是什么。
一旦用户第一次退出应用程序,问题就永远得到解决。您认为我应该在哪里查找? 最近进行了应用程序内搜索,以查看是否由于 SQLite 数据库方法的 onUpgrade() 组件而触发了一些奇怪的行为。
@Override
public 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"/>
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:allowBackup="false"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
>
<activity android:name=".MyMain"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<activity android:name=".StartupActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SelectActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"/>
<activity android:name=".ImageSelectionActivity"
android:theme="@android:style/Theme.Dialog"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".DetailsActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"/>
<activity android:name=".EMailActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"/>
<activity android:name=".SendTo"
android:label="@string/share_label"
android:theme="@android:style/Theme.Dialog" >
<INTENT-FILTER>
<ACTION android:name="android.intent.action.MAIN">
<CATEGORY android:name="android.intent.category.LAUNCHER"/>
<INTENT-FILTER>
<ACTION android:name="android.intent.action.VIEW">
<CATEGORY android:name="android.intent.category.DEFAULT">
<CATEGORY android:name="android.intent.category.BROWSABLE">
<DATA android:scheme="callback" android:host="twitter"/>
</CATEGORY>
</CATEGORY>
</ACTION>
</INTENT-FILTER>
</ACTION>
</INTENT-FILTER>
</activity>
<activity android:name=".CreateMyActivity"
android:label="@string/create_account_label"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog"/>
<activity android:name=".ViewInLayoutActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"/>
<activity android:name=".Preferences"
android:label="@string/set_preferences"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog"/>
<activity android:name=".AboutActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"/>
<activity android:name=".InteractiveActivity"
android:label="@string/app_name_with_version"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog"/>
<activity android:name=".AlertFailedCommunications"
android:screenOrientation="portrait"
android:label="@string/alert_account_label"
android:theme="@android:style/Theme.Dialog"/>
</application>