请教个问题,有做 android 开发的麻烦看下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w950888
V2EX    Android

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

  •  
  •   w950888 2023-05-12 16:35:33 +08:00 12308 次点击
    这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家有遇到这个问题吗?

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

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

    网上的方法:

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

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

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

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

    还有个路子,楼上也说了,想办法保存状态。原生的状态保存到 bundle ,webview 的保存到 webview 自身的缓存和数据存储里,比如 localstorage ,cookies 等。另外,也可以考虑使用 webview 的离线缓存。
    zpxshl
        10
    zpxshl  
       2023-05-13 14:44:46 +08:00 via Android
    小米吗
    debuggeeker
        11
    debuggeeker  
       2023-05-13 20:25:13 +08:00
    内存不够情况下系统会回收页面,回来的时候就重建了,说白了就是系统机制决定的。优化你的 APP ,减少内存占用,让系统有更多的内存给相机用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2525 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 14:43 PVG 22:43 LAX 06:43 JFK 09:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86