Android有很多fragment时如何节省内存

我在做一个项目,界面非常多,大概30多个,都是用fragment实现的,担心非常占内存,所以想请教一下当Activity的fragment非常多的时候,怎样节约内存?我之... 我在做一个项目,界面非常多,大概30多个,都是用fragment实现的,担心非常占内存,所以想请教一下当Activity的fragment非常多的时候,怎样节约内存?
我之前用new来声明fragment,然后add。但是遇到一个问题,就是进程资源被回收之后重建,fragment也重建但是不能响应事件了,所以后来改成xml方式声明了,但是这样可能会造成严重的内存问题,所以想请教一下该怎么办
展开
 我来答
小傻

推荐于2016-01-13 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31135
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

android 中很多fragment节省内存,主要通过限制每个fragment实例化的次数,可以通过如下方式:在项目中需要进行Fragment的切换,一直都是用replace()方法来替换,替换之后,就可以不用再重新实例化fragment,Fragment:

       public void switchContent(Fragment fragment) {
       if(mContent != fragment) {
           mContent = fragment;
           mFragmentMan.beginTransaction()
               .setCustomAnimations(android.R.anim.fade_in, R.anim.slide_out)
               .replace(R.id.content_frame, fragment) // 替换Fragment,实现切换
               .commit();
       }
   }

   

GoodseaJt
推荐于2018-02-11 · TA获得超过130个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:174万
展开全部
LZ不用add,用一个transaction 的replace函数,这样每次切换都会把上一次的fragment回收了,就不存在内存问题了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨儿董子墨
2019-05-09 · TA获得超过1162个赞
知道小有建树答主
回答量:1957
采纳率:96%
帮助的人:9.5万
展开全部
出现了这种情况你可以使用对象的单例来解决:
就是构造函数的私有化:比如最里面的那个fragment
class
fragment1
extends
fragment{
private
fragment1
f
=
null;
//在这里私有化他的构造函数
private
fragment1(){
}
//创建改fragment的实例:
public
static
fragment1
getinstance(){
if(fragment1
==
null){
fragment1
f
=
new
fragment();
return
f;
}else{
return
f;
}
}
}
//这样整个工程就只能有fragment1的一个实例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友43e8003
2014-07-22 · TA获得超过232个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:117万
展开全部
就用代码动态生成。
追问
恩,我之前是用代码动态生成的,但是调用相机之类的程序回来之后,进程就被杀死重建了。。。fragment发生了重叠,使用xml就不会重叠
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式