V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YGBlvcAK
V2EX  ›  Android

为什么 android 的墓碑会重载、重弹、睡死,而 ios 不会?

  •  
  •   YGBlvcAK · 2023-09-19 09:45:10 +08:00 · 10457 次点击
    这是一个创建于 426 天前的主题,其中的信息可能已经有所发展或是发生改变。

    然后安卓要通过各种模块、定时唤醒等来防止上面的情况出现,有没有懂的大佬从原理上来解释一下?是安卓这个系统从 linux 内核构建时就留下的祸根?

    或者从另一个角度问,现在的安卓到底要怎样改造才能实现完美的墓碑?

    19 条回复    2023-09-21 08:09:02 +08:00
    pangzhen
        1
    pangzhen  
       2023-09-19 10:03:17 +08:00
    iOS 也会。
    mars2023
        2
    mars2023  
       2023-09-19 10:22:04 +08:00   ❤️ 3
    有没可能 Android 就是按照多任务系统设计,为什么要改造成墓碑机制呢?
    codehz
        3
    codehz  
       2023-09-19 10:47:48 +08:00
    其实安卓已开始就提供了恢复状态的机制
    但没人用
    AoEiuV020JP
        4
    AoEiuV020JP  
       2023-09-19 10:53:38 +08:00
    开发思维?
    ios 开发者会假定 app 后台会被冻结,
    android 开发者会假定 app 后台继续工作,
    binbin0915jjpp
        5
    binbin0915jjpp  
       2023-09-19 10:57:38 +08:00
    16G 内存 不用搞这些...
    TArysiyehua
        6
    TArysiyehua  
       2023-09-19 11:11:00 +08:00
    墓碑不就是干这个的吗?
    sankemao
        7
    sankemao  
       2023-09-19 11:17:49 +08:00   ❤️ 1
    如果开发者遵照开发规范,即便 app 后台被杀后,从新打开也能恢复之前的状态。
    murmur
        8
    murmur  
       2023-09-19 11:36:31 +08:00   ❤️ 1
    ios 的后台只是留了一张截图而已,然后看截图的时候在那重载
    stinkytofu
        9
    stinkytofu  
       2023-09-19 11:46:05 +08:00
    开发水平问题, 可能是有些变量在生命周期结束后变为 null 值了, 但是 Activity 恢复后没有处理, 这也是历史原因, 安卓本来就是多任务系统, 开发者习惯 APP 整个生命周期都是存活的. 按照 7#说的, 如果完全按照开发规范, 是不会有这个问题的, onCreate 函数提供了恢复参数
    Leonard
        10
    Leonard  
       2023-09-19 12:41:25 +08:00 via iPhone
    @binbin0915jjpp 不是内存问题,是耗电问题
    YGBlvcAK
        11
    YGBlvcAK  
    OP
       2023-09-19 14:06:16 +08:00
    @binbin0915jjpp 楼上说的对,如果没有墓碑毒瘤 app 就会一直在后台运行,增加耗电和卡顿

    @murmur 这个重载不是你说的那个重载,是直接的重载了

    @TArysiyehua 墓碑不完美,有很多问题

    @AoEiuV020JP 所以要墓碑,并且强制,现在的问题就是墓碑问题太多

    @mars2023 毒瘤 app 太多,ios 并不是没有毒瘤,ios 不给机会而已
    TArysiyehua
        12
    TArysiyehua  
       2023-09-19 14:40:27 +08:00
    墓碑机制肯定不完美的,如果有一个完美的方案早就被用上了。你猜为啥大部分人都不用,不就是他的问题多过于实际上得到的体验嘛。。。
    zhouquanbest
        13
    zhouquanbest  
       2023-09-19 14:58:45 +08:00
    Android 是另一种思维 可以理解为让应用睡眠
    这样也没什么开发和适配成本,实际上也就是内存严重不足时会杀下后台,但严重不足时,iOS 也杀啊

    现在旗舰点的 Android 手机,基本能保证 15-18 个左右后台驻留,日常使用绰绰有余
    mars2023
        14
    mars2023  
       2023-09-19 15:03:07 +08:00
    @YGBlvcAK #11 所以我选择 iPhone ,就是为了避免跟国内的 app 斗智斗勇;
    个人觉得哪怕 Android 原生设计得再好,国产 OS 也可以为了公司业务对实际做调整;
    而且 国产 OS 哪怕防得了其他的 app ,还是可能存在各种厂商合作的白名单。

    所以,一开始就放弃“安卓” 这个体系吧。
    liuzhedash
        15
    liuzhedash  
       2023-09-19 15:07:18 +08:00
    我感觉苹果的思路是:移动端的多任务是由 APNs 消息驱动的,只有收到了消息,才有必要唤醒对应的进程。
    当然一个直接的问题就是:后台听音乐算不算多任务?
    cherryas
        16
    cherryas  
       2023-09-19 15:55:20 +08:00
    因为安卓毒瘤太多所以用户会主动清掉后台 app ,
    ios 清后台没什么意义
    ikas
        17
    ikas  
       2023-09-19 20:39:40 +08:00
    1.aosp 中进程生命周期,app 只要按照文档适配,完善 app 的代码,基本 app 端问题不大
    2.安卓各种魔改系统,各种对 aosp 机制的修改,app 适配坑死人
    3.各种安卓"安全工具",你永远不知道你的 app 如何死的,dont kill my app
    4.app 各种垃圾 sdk,各种保活与对抗导致问题丛生
    5.google 官方 sdk 的各种 bug,比如 Fragment 的各种生命周期的 bug,不知道改了多少版本

    5.ios 墓碑回来闪退直到近几年内存加了才逐渐少了
    mmdsun
        18
    mmdsun  
       2023-09-19 22:11:46 +08:00 via iPhone
    我什么我感觉 iOS 重载几率更高呢
    hhhsuan
        19
    hhhsuan  
       2023-09-21 08:09:02 +08:00 via Android
    墓碑是啥
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:25 · PVG 04:25 · LAX 12:25 · JFK 15:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.