Android多线程实例分析


本文小编为大家详细介绍“Android多线程实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android多线程实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在android程序中,会有一些耗时的操作,比如从网上抓取图片,下载文件,批量更新数据库等,这些操作对于手机而言会需要很长的时间,而应用程序界面又不能等到这些操作完成后再显示,所以要让界面各这些耗时的操作并行处理,用多线程可以解决这个问题。当然还有其它解决方案,比如用Service.我们先作一个例子吧,大概是这样的:有一个列表,每行显示的一个图片,图片是存放在网上的。如果不用多线程,也是可以的,但是要等到所有图片下载完了才能展示出来。这种方式对用户体验很不友好,所以我们采用多线程的方式,对每一个图片开启一个线程,当其下载完数据后,在主线程中显示出来。主Activity适配器importjava.util.ArrayList;importjava.util.List;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.os.Handler;importandroid.os.Message;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importandroid.widget.TextView;publicclassImageListAdapterextendsBaseAdapter{privateContextcontext;privateString[]myImages=null;publicImageListAdapter(Contextcontext,String[]myImages){this.context=context;this.myImages=myImages;}@OverridepublicintgetCount(){if(myImages==null){return0;}returnmyImages.length;}@OverridepublicStringgetItem(intposition){if(positionmyImages.length){returnnull;}returnmyImages[position];}@OverridepubliclonggetItemId(intposition){returnposition;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){Viewitem=null;if(convertView!=null){item=convertView;}else{item=View.inflate(context,R.layout.image_item,null);}finalImageViewimageView=(ImageView)item.findViewById(R.id.image);finalStringimage=getItem(position);i免费云主机域名f(image==null){returnitem;}//对每个图片地址创建一个线程,newThread(){publicvoidrun(){Messagemsg=newMessage();msg.what=0;//获得图片的Bitmap对象。getBitmap省略了,就是从网上通过http下载图片然后转化成一个BitmapBitmapbitmap=getBitmap(image);Listlist=newArrayList();//将bitmap和imageView包装成一个List传到线程外list.add(bitmap);list.add(imageView);msg.obj=list;handler.sendMessage(msg);}}.start();returnitem;}privateHandlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){switch(msg.what){case0://接到从线程内传来的图片bitmap和imageView.//这里只是将bitmap传到imageView中就行了。只所以不在线程中做是考虑到线程的安全性。Listlist=(List)msg.obj;Bitmapbitmap=(Bitmap)list.get(0);ImageViewiv=(ImageView)list.get(1);iv.setImageBitmap(bitmap);break;default:super.handleMessage(msg);}}};}
布局xml
imagelist.xml读到这里,这篇“Android多线程实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: php页面输出值乱码问题如何解决

这篇文章主要介绍了php页面输出值乱码问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php页面输出值乱码问题如何解决文章都会有所收获,下面我们一起来看看吧。 1.设置字符集PHP应用程序输出到页面的字符集通过heade…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/25 11:20
Next 07/25 11:20

相关推荐