开发者社区> 问答> 正文

android 内存释放的问题?报错

请教下,我在写android程序中,在方法中习惯加try...catch
这样能保证程序不会莫名奇妙的奔溃,退出,但是,这样有个问题
比如,android系统在内存紧张的情况下,会释放一些资源,包括一些变量,这样,如果程序正好运行过程中,使用了被释放的变量,必然报错,但是,因为有了try...catch,程序不会奔溃,但实际上,程序已经不能正常工作了,请问,这一般怎么处理呢?
我现在想在catch里面加个重定向功能,比如程序进入catch里面,我清空activity栈,然后重定向到登陆窗口。
但是,这有个问题,我不知道,程序在什么位置,什么时间出现异常,如果,我要加这段重定向代码,必然要在所有的catch中,加上这段代码,这样做,感觉很不合理,请问你们有什么好的办法

 

展开
收起
爱吃鱼的程序员 2020-06-12 14:19:09 539 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    可以只在调用最顶层的方法中加try-catch。这样我觉得不好吧,如果有的变量被释放掉了,那就是变成null了,那就可以判断下变量是不是null,若是,则重新赋值。<spanstyle="font-size:18px;">你这个问题问的就有问题,你觉得你的变量会被释放?这种情况基本不会遇到,而且,你知道的 不是有trycatch吗?你的catch里面用来干嘛的?难道你的catch里面直接不写异常的处理方式<spanstyle="font-size:18px;">?至于你说的全部需要重定向到首页,我觉得你还没有理解对象的继承特性。不然是不会问这个问题的。

    疑惑:强引用的也会被释放吗?

    如果是大量的数据,为何不弄个Cache来管理。

    你说的问题并不会出现

    <atarget='_blank'>@天王盖地虎626你打断点从变量赋值的每一句都去看肯定是你手动赋值的时候自己赋了null上去或者就是没有初始化回复<aclass='referer'target='_blank'>@天王盖地虎626:你这个问题要具体分析,说明一下你使用了什么东西被设为null了,不然这种解决方法就是打狗皮膏药没有解决本质问题。例如你把一个Activity里的控件交给一个生命周期比这个Activity还要长的类去使用,那出错是必然的。为什么呢?但是,我确实遇到过一些变量被置为null了,而且是控件变量突然变为null了,导致一些莫名其妙的错误,我只能理解为被系统回收了android有没有手动清除内存的方法?
    又没写=null,怎么释放——,java层有system.gc(),c层的话只知道图片可以recycle,不归虚拟机管的话,弱应用或者用玩立马free

    2020-06-12 14:19:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载