w950888
V2EX  ›  Android

请教个问题,有做 android 开发的麻烦看下

  •  
  •   w950888 · May 12, 2023 · 13962 views
    This topic created in 1278 days ago, the information mentioned may be changed or developed.

    大家有遇到这个问题吗?

    Activity 中放了一个 webview, 在 webview 中, 通过 startActivityForResult 的方式调用系统相机拍照

    拍完照通过 onActivityResult 接收拍照回调, 这时可能出现 Activity 重建问题, webview 也被刷新了,如何避免 Activity 重建的问题呢?

    网上的方法:

    1. 因为 webview 内的内容比较复杂没法通过onSaveInstanceState保存状态.

    2. android:configChanges="orientation|keyboard|keyboardHidden|screenSize"测试这个没效果,还是会出现重建的情况.

    11 replies  •  2023-05-13 20:25:13 +08:00
    AoEiuV020JP
    AoEiuV020JP
    May 12, 2023
    1
    只能想办法避免 activity 重建,实在避免不了的情况直接 finish 这个重建的 activity ,
    总之没法继续工作,
    w950888
    w950888
    OP
    May 12, 2023
    2
    @AoEiuV020JP 请问有什么办法避免 Activity 重建吗?
    试了很多方法,在低端平板上出现频率还是很高, 尤其是菊花家那种, 高分辨率摄像头+低端,CPU 内存搭配平板机型, 拍照的时候就很卡,拍完返回就重建了.
    Webview 的 Activity 设置成了单例模式, 因为 webview 里面的业务比较复杂也没法保存临时数据.
    直接 finish 这个重建的 activity,之前的数据还是丢了,
    主要是想保存网页状态.
    nanasaki
    nanasaki
    May 12, 2023
    3
    感觉还是存 bundle 吧,后面在从里面拿信息判断要不要刷新
    ZhizhenZhou
    ZhizhenZhou
    May 12, 2023 via Android
    4
    存缓存呢?
    ByteRan
    ByteRan
    May 12, 2023❤️2
    5
    1 、避免 Activity 重建这个事情误解
    2 、webview 中的东西当然要用 webview 来解决,把 webview 涉及到的状态信息定时存到 localStorage 中
    okakuyang
    okakuyang
    May 12, 2023 via iPhone
    6
    自己实现拍照 避免重建
    bluesky139
    bluesky139
    May 13, 2023 via Android
    7
    要完全避免只能自己实现拍照。
    guchengyehai1
    guchengyehai1
    May 13, 2023 via iPhone
    8
    Activity 与 WebView 都是独立的,WebView 可以独立加载网页
    lait
    lait
    May 13, 2023 via Android❤️1
    9
    低端平板,感觉是打开系统相机后内存不足,栈内的 activity 被回收了。可以监听下是否是低内存了。

    楼上有说自己实现拍照可能可行,总归是有可能比系统相机内存占用低一些。

    还有个路子,楼上也说了,想办法保存状态。原生的状态保存到 bundle ,webview 的保存到 webview 自身的缓存和数据存储里,比如 localstorage ,cookies 等。另外,也可以考虑使用 webview 的离线缓存。
    zpxshl
    zpxshl
    May 13, 2023 via Android
    10
    小米吗
    debuggeeker
    debuggeeker
    May 13, 2023
    11
    内存不够情况下系统会回收页面,回来的时候就重建了,说白了就是系统机制决定的。优化你的 APP ,减少内存占用,让系统有更多的内存给相机用。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4504 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 01:19 · PVG 09:19 · LAX 17:19 · JFK 20:19
    ♥ Do have faith in what you're doing.