Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 981|回复: 0

Q&A: ViewFlipper读入大量图片怎么处理以及OutOfMemory?

[复制链接]

该用户从未签到

发表于 2011-10-22 19:16:21 | 显示全部楼层 |阅读模式
需求:
         在ViewFlipper中读入十几张图片,并可以滑动切换。
问题:
1,  读入的过程花时间长的话,大家有没有好点的处理办法呢?
2,  读入完成以后,要及时释放内存,怎么处理呢?
大概代码如下:
public voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main3);


        Relative = (RelativeLayout) findViewById(R.id.lin_Id);
        params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        flipper = new ViewFlipper(this);


        this.mainProcessing();//调用线程

   }          privateHandler handler= newHandler();   privatevoidmainProcessing(){    Thread thread = new Thread(null, runnable, "Background");    thread.start();   }   privateRunnable runnable= newRunnable() {      
        @Override
        public void run() {
            //动态加载ViewFlipper
            for(i = 0; i<imageArray.length;i++){
             flipper.addView(addImageById(imageArray),params);
            }
            handler.post(doUpdateGUI);
            }
    };
    public View addImageById(int id){
        iv = newImageView(ThirdActivity.this);
        iv.setImageResource(id);
        return iv;
    }
//更新GUI,动态加载ViewFlipper
    private Runnable doUpdateGUI = new Runnable() {
        
        @Override
        public void run() {
            Relative.removeAllViews();
            Relative.addView(flipper, params);
            Toast.makeText(getApplicationContext(),"左右滑动切换图片", Toast.LENGTH_LONG).show();
            }
    };
//按下返回键时,及时的释放内存
    @Override
    public void onBackPressed() {
        iv = null;
        flipper = null;
        Relative = null;
        handler.removeCallbacks(doUpdateGUI);
        java.lang.System.gc();
        super.onBackPressed();
    }
我在网上搜了一下,自己的处理方法是这样的:1,  开一个线程,线程里面读入图片,GUI动态加载ViewFlipper
2,  即使释放内存的那几条语句是在网上搜的,不知道合适不?
现在的问题是:重复打开几次,或者重复打开这个Activity的频率高点,就会出现OutOfMemory的错误,大家看怎么解决啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 14:09 , Processed in 0.376773 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表