zoukankan      html  css  js  c++  java
  • 桌面进入应用重启问题

        使用手机系统第一次安装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,怀疑是内存问题异常杀掉了应用的二级菜单,反正都无果而终,最后还是靠查阅网上资料获得方法。。

  • 相关阅读:
    Leetcode-Daily: Jewels and Stones
    Spark专题(二):Hadoop Shuffle VS Spark Shuffle
    Spark专题(一):Spark工作原理图
    我司建立图书借阅的一点思考
    机器学习的分类方法——逻辑回归
    机器学习的分类算法——集成学习
    浅谈对离散型随机变量期望的理解
    sklearn学习:make_multilabel_classification——多标签数据集方法
    外星人在阴间修仙
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/yangwubo/p/9056907.html
Copyright © 2011-2022 走看看