首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

Android 运行大一点的 App 切换 App 后马上返回原 App 都会导致原 App 重新运行 是什么设计

  •  
  •   whereabouts · 2018-12-04 08:58:21 +08:00 · 1808 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手机内存有点小只有 3GB,想了解一下原因
    24 回复  |  直到 2018-12-04 16:43:36 +08:00
        1
    lhx2008   2018-12-04 09:00:28 +08:00 via Android   ♥ 3
    原因就是你内存太小了
        2
    honeycomb   2018-12-04 09:01:34 +08:00 via Android
    这年头 6G 内存比较保险
        3
    luojianxhlxt   2018-12-04 09:02:05 +08:00   ♥ 5
    给你看广告的设计
        4
    justahri   2018-12-04 09:06:32 +08:00
    当然是让你看广告放松啦
        5
    shenhb   2018-12-04 09:06:41 +08:00
    因为 android 设计就是这样,后台的进程在内存不足的时候会被杀掉,回收内存
        6
    ruimz   2018-12-04 09:12:12 +08:00 via Android
    让你看广告啦
    比如我王者荣耀切到后台聊句微信再回来都不掉线,从 tb 切出去再回来就得看广告了
    我看 tb 的时候锁屏再打开,都会出广告。
    而且每次 tb (非启动)出广告的时候内存用了一半都没有呢
        7
    icop   2018-12-04 09:21:14 +08:00
    我也遇到了。并且从任务管理器切回去就不会重启,如果从桌面点进去就会重启。
    我是这么处理的。
    在你的基类 Activity 里面的 onCreate()方法中,加入如下代码:
    if (!isTaskRoot()) {
    Intent mainIntent = getIntent();
    String action = mainIntent.getAction();
    if (mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
    finish();
    return;
    }
    }
    并且重新实现基类 Activity 的

    @Override
    public boolean moveTaskToBack(boolean nonRoot) {
    return super.moveTaskToBack(true);
    }

    应该就能解决问题了。
    还有你的启动模式 不能用 singeInstance。
        8
    anan1231230   2018-12-04 09:21:46 +08:00
    界面被回收了,想办法把进程锁住吧,不回收就没问题了
        9
    greenskinmonster   2018-12-04 09:23:48 +08:00
    楼上一堆瞎扯的,resume 时显示 splash screen,跟 app 被系统回收,重新运行完全两码事。
    系统回收策略,每个厂商都会自己定制,并不是跟 AOSP 完全一致。
        10
    maxxxxx   2018-12-04 09:27:03 +08:00
    @greenskinmonster 说楼上瞎扯,你也没扯出什么干货啊。
        11
    greenskinmonster   2018-12-04 09:30:57 +08:00   ♥ 2
    @maxxxxx #10 resume,系统回收,点到了还不明白的话,给你干货你咽得下吗?
        12
    jdgui   2018-12-04 09:39:38 +08:00
    @greenskinmonster 楼主是 3g 内存,而且是运行大 app 才会出现。所以基本上可以排除厂商在 resume 的时候展示的。
        13
    mike77546   2018-12-04 10:03:02 +08:00
    你的手机内存太小
        14
    wohenyingyu03   2018-12-04 10:11:07 +08:00
    @jdgui 人家回的是楼上瞎扯的,不是回楼主。
        15
    fan123199   2018-12-04 10:14:56 +08:00
    没错,是 app 设计太烂。好的 app 可以做到不重启。除非你手动退出。
        16
    maxxxxx   2018-12-04 10:31:08 +08:00
    @greenskinmonster 干货没看到,看到了你的傲慢。哪里来的优越感?
        17
    Raisu   2018-12-04 10:33:50 +08:00
    产品需求就是这样吧
        18
    icop   2018-12-04 10:36:37 +08:00   ♥ 1
    我说的是,如果从桌面点击进去会重启 APP,从最近任务点击进去不会重启 APP。

    具体原因看下面的地址:
    https://issuetracker.google.com/issues/36941942
        19
    maxxxxx   2018-12-04 10:38:49 +08:00
    @greenskinmonster resume 说白了就是前后台切换?从楼主的描述上明显就是杀了进程,我看了下楼上说目的让你看广告的明显是在开玩笑而已,不知道你说楼上瞎扯的意义。
        20
    jdgui   2018-12-04 10:43:57 +08:00
    @wohenyingyu03 好像是,我理解偏了。
        21
    greenskinmonster   2018-12-04 10:44:37 +08:00   ♥ 1
    @wohenyingyu03 #14 @jdgui #12
    抱歉,打击面过广,确实不是说楼主。
    系统内存太少是一个解释。
    我更倾向于系统回收策略有点问题,如果这个 app 刚刚还使用过,系统还是应该先回收使用时间更早的应用。
        22
    yogogo   2018-12-04 13:21:07 +08:00
    假装重新启动页,其实是要让你看启动页的广告
        23
    xzk715   2018-12-04 14:03:02 +08:00
    @icop 你的回答是正解 其他的都在扯淡 我们开发也遇到这个问题 确实是 Android 的原因 跟各厂商没关系
        24
    iacyl   2018-12-04 16:43:36 +08:00 via Android
    内存太小,还有可能系统为了内存杀 app。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4272 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 39ms · UTC 03:28 · PVG 11:28 · LAX 19:28 · JFK 22:28
    ♥ Do have faith in what you're doing.