相关疑难解决方法(0)

从Android应用安装程序和主屏幕启动应用程序时的活动堆栈排序问题

仅出于测试目的,我允许通过URL下载和安装我的应用APK.下载到手机上后,可以使用Android应用安装程序启动它,用户可以选择将其安装到自己的设备上然后再运行.

考虑我们是否以上述方式下载并运行应用程序.我的应用中的主/启动器活动是登录页面(Activity A).一旦用户被认证,他们就被带到应用程序的主要区域,例如Activity B.所以现在这个任务的当前活动堆栈是A > B.

然后我按下手机上的主页按钮,然后进入Android主屏幕.我通过菜单中的图标重新启动我的应用程序,我被带到了Activity A,而不是Activity B.活动堆栈现在是A > B > A,或者现在有两个单独的任务与活动堆栈A > B,A分别.我想要的是Activity B在我重新启动应用程序时被收回.在这种状态下按回来将带我回去Activity B.

如果我首先通过安装程序打开应用程序,而不是通过主屏幕/菜单打开应用程序,则只会发生这种不良行为.

我研究了各机制如何开展活动.当我们使用app安装程序时,我们会看到以下日志:

INFO/ActivityManager(XXXX): Starting activity: Intent { dat=file:///mnt/sdcard/download/[my app].apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)

通过发射器/主屏幕:

INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)

当使用安装程序启动时,我们看到它正在使用标志0x10000000,但是当启动器启动时,我们看到它正在使用0x10200000.它也使用意图类别.

从 …

flags android task android-intent android-activity

50
推荐指数
2
解决办法
1万
查看次数

Android内置版本的行为与通过USB安装的apk不同

我有一个非常令人困惑的问题.我已经构建了我的应用程序的最终版本APK,将其提交到Play商店,并安装在我的测试设备上.当我以这种方式安装时,应用程序展示了不同的启动模式行为.

我生成的APK是Gradle版本的产品,包括Proguard和zipalign.为了便于解释,请说我的应用程序是一个仪表板类型的应用程序,其主要活动显示活动B的启动按钮.我拿这个版本APK并通过USB'adb install'将其安装到我的设备所以我正在比较完全相同的APK有两种不同的安装方法.

USB方法: 当用户单击主活动中的按钮以启动活动B时,将启动活动B并在屏幕上显示.如果用户点击主页按钮(接到电话等)然后返回应用程序,活动B仍然显示.这是期望的(AND EXPECTED)行为.

存储方法: 从商店下载APK并再次安装/启动显示主要活动.单击该按钮时,将再次启动活动B. 现在,当用户回到主页并返回时,后面的堆栈显然被清除,主活动再次显示.

我没有在清单中指定任何特殊的启动模式,因此所有活动都是标准的.怎么安装方法会影响这样的事情!?这让我很生气.有没有人知道为什么会这样?

android android-intent apk google-play

14
推荐指数
1
解决办法
1046
查看次数