- 让"云"..
- 曾垂鑫的技术专栏
- 李博客
- UsefulShare
- Chao_Space
- rikery
- 丁丁历险
- 有志者事竟成!
- 迷你兔
- I AM A VM
- 技术成就梦想
- virtualbox
- 微软技术博客
- abner kou
- 叶峰的博客
- 大向技术分享
- lafferli
- 漫步网络
- 邓卫华
- 成就梦想---唯有执..
- yangming.com
- 心随睿动
- 我儿子真帅!
- yahoon的小屋
- 虚拟的现实
- web开发之php
- 王波洋
- shyleoking的专栏
- GPM官方网站
- 高博的世界
- 吟�技术交流
- IT----你---我---..
- ccfxny的博客
- 高安定的51CTO博客
- Success belongs t..
- 小秋
- wnight88
- 忘情水 曾经年少爱..
- 微软产品代理商
- 叶俊坚
- 王春海的博客
- Kirin的茶水间
- 矩阵天空
- WW的统一沟通
- Challenge
- 激情因梦想而存在
- 胖哥技术堂
- 下里巴人的家
- 邮件服务器及网络..
- 自由人信息港
前言
在Linux系统上安装Domino Server是一个小小的挑战,其实并没有大家想想的复杂,既然是商业性的软件,OEM早就为我们解决了安装的难度,还有就是选择自己熟悉的Linux发行版,各个发行版操作上还是有一定的区别的,这里选择最新的Ubuntu Server 13.04,尽量在Server版本的Ubuntu上安装,虽然说Desktop版本也可以。
安装 Unbuntu server 13.4
下载Ubuntu server镜像
http://releases.ubuntu.mirrors.uk2.net//raring/ubuntu-13.04-server-amd64.iso 选择国内的镜像源
接下来就是安装了,安装也就是step by step,接下来用简单的文字和截图说明
选择语言
选择安装的类型
MAAS Metal as a Service:他大概的功能是进行大规模服务和服务器部署,使得服务部署极具扩展性,在这里不需要它,就安装Ubuntu服务器版
上一篇博文讲述了ANR异常以及使用handler类解决异常。这次我将给大家介绍另外一种处理耗时操作的方法。异步处理耗时操作是当时比较流行的方法,所以能完全掌握此类的使用是非常重要。至于为什么会流行,下面我就先给大家介绍使用AsyncTask的好处
1:使用AsyncTask的好处
当我们处理耗时操作时候,比如下载这时候我们就要启动一个线程,假设我们有几百条线程要启动。我给大家举个例子。线程启动就像扫把,启动一个就等于一把新扫把,当我们用完的时候就丢掉,等到下次再用的时候就在买一把新扫把,如此循环。这样就等于浪费资源。而使用AsyncTask就想一个放10几个扫把的地方。每次我们用了扫把后就放回去,等下次某个人需要用的时候继续循环使用这个扫把,这样以来就节省了系统资源。现在大家知道AsyncTask类的好处了吧,能节省系统资源对我们做好一个大项目来说是至关重要的。
(1):我给大家做个例子,有一个进度条,一个文本,一个按钮启动下载,当点击下载时候文本就会根本当前进度条进度显示百分比的进度,如下图
(2):写一个内部类继承AsyncTask,其实第一个方法是必须实现的,后面2个是我手动调用的,具体代码如下
class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInString... params) { publishProgress(values); return null; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } @Override protected void onPostExecute(String result) { super.onPostExecute(result); } }
首先这个类需要有3个类型,第一个params类型就是等会我们启动线程池需要传入的参数类型,一般都是传入网址,所以我定义它为String类型,当此类型定义完成后,doInBackgroud方法中的参数类型就是同样是String类型(doInBackground方法想当于线程的run方法,是在子线程处理的)。它会获得我们传入的网址参数。第二个Progress类型就是我们在处理耗时操作过程中如果需要处理主线程的东西时候,就可以在doInBackground方法中调用publishProgress(values)方法激活第二个重写的方法onProgressUpdate()方法(这个方法是在main线程中的执行的因此可以操作UI对象.values一般都是传入进度参数。第三个参数就是当我们处理好了doInBackgroud的方法,他会返回一个结果,这个结果的类型,这里我给它定义为String,这时候doInBackgroud方法返回值自动变为String类型
然后第三个方法onPostExecute就会接受到doInBackgroud返回的结果值。
(3):在鉴定匿名类里面我们就启动这个线程池,由于之前我定义了启动线程池传入的参数为String类型,所以现在我就传入了一个String,代码如下:(这里这个参数目前没用只是为了说明前面的问题
new MyTask().execute("www.baidu.com");
(4):然后在doInBackgroud方法处理进度(这里设定每100毫秒增加一个进度然后调用publishProgress()方法来在主线程增加进度条进度和更新文本百分比进度),代码如下
@Override protected String doInString... params) { //没100毫秒进度+1,总共执行100次 for (int i = 0; i < 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } //激活onProgressUpdate并将进度i传入 publishProgress(i); } return "下载完成"; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); //更新进度条进度 mProgressBar.setProgress(values[0]); //更新百分比进度 mTextView.setText(values[0]+"%"); }
(4):当下载完成以后我们在onPostExecute()方法中将文本内容更新为下载完成
@Override protected void onPostExecute(String result) { super.onPostExecute(result); mTextView.setText(result); }
大功告成。这就是使用AsyncTask类实现异步耗时操作的用法,我会吧这次程序的完整代码上传到我的上传,大家如果有需要的话可以去下载,下一次我会结合ListView和AsyncTask做一个下载歌曲的小项目
本文出自 "" 博客,请务必保留此出处http://7735447.blog.51cto.com/7725447/1275818
没有评论:
发表评论