使用手机系统第一次安装apk之后直接打开,进入应用二级菜单,将应用退到后台,然后再次从桌面进入应用,出现应用重启重新回到主菜单的问题。

此问题应该算是一个厂商问题,从log来看,当从第一次打开的应用进入到后台之后,然后从桌面点击应用的信息如下:

 

第一次安装完之后打开应用:

Line 33: 05-18 16:12:11.604 1511 1980 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.example.wg.webviewtest cmp=com.example.wg.webviewtest/.MainActivity} from uid 10076 and from pid 18195 on display 0

 

进入应用二级菜单:
Line 107: 05-18 16:12:14.664 1511 2713 I ActivityManager: START u0 {cmp=com.example.wg.webviewtest/.NativeMainActivity} from uid 10201 and from pid 19256 on display 0

 

使用HOME键退出后台:
Line 157: 05-18 16:12:15.817 1511 1742 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.oppo.launcher/.Launcher (has extras)} from uid 1000 and from pid 1511 on display 0

 

再次从桌面进入应用
Line 179: 05-18 16:12:17.108 1511 1593 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.wg.webviewtest/.MainActivity bnds=[540,966][792,1260]} from uid 10053 and from pid 2715 on display 0

应用收到的log信息:

第一次打开应用的intent

Line 23: 05-18 16:30:58.739 21998 21998 D MainActivity: =====General Intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.example.wg.webviewtest cmp=com.example.wg.webviewtest/.MainActivity }

 

退出到后台后,第二次从桌面打开应用的intent
Line 181: 05-18 16:31:03.480 21998 21998 D MainActivity: =====General Intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 cmp=com.example.wg.webviewtest/.MainActivity bnds=[540,966][792,1260] }

从网上参考的解释为利用系统安装器打开程序,有些厂商在启动的Intent是没有带Category, 而我们自己打开程序是带了Category:

https://blog.csdn.net/u010351494/article/details/72974477

导致的这种问题,最后通过再onCreate中添加如下代码,确实解决了问题:

if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
Log.d(TAG,"=====getIntent="+getIntent().toString());
finish();
return;
}

此问题的调试花费了很多时间,刚开始以为是自己应用代码的问题,反复调试launchMode,怀疑是内存问题异常杀掉了应用的二级菜单,反正都无果而终,最后还是靠查阅网上资料获得方法。。