day28安卓线程

来源:互联网 发布:程序员要考什么证 编辑:程序博客网 时间:2024/05/26 09:55

AsyncTask

========================================

*异步任务

*包含了Handler,Message,消息,线程

*如果创建启动多个异步任务,默认只有一个线程依次执行

*如果希望多个异步任务并行处理.,

executeOnExecutor(Executer)

executeOnExecutor(Executor,....)

---------------------------------------------------------

doInBackground(....)工作线程中执行

publishProgress(...)在doInBackground()中调用发布进度

onProgressUpdate(...)在主线程中执行,更新UI

onPostExecute(....)在主线程执行,处理最终结果

cancel(true)取消当前正在执行的任务


ListView

===================================

*需要一个Adapter来提供条目视图

*Adapter 需要数据列表和条目视图的布局文件

*生成条目视图时:

新建布局视图实例LayoutInflater.

取出一项数据

将数据放入视图显示

将视图交给ListView显示


BaseAdapter

==========================================

*抽象父类

*方法:

getCount()

表示数据的数量即条目数量

ListView 会调用adapter.getCount()来确定,总共要显示多少个条目


getItem(position)

获得指定位置的条目视图

负责创建条目视图,交给ListView;

ListView 要显示其中一个条目时会调用adapter.getItem(下标)

来获得一个条目视图显示.


*****可变长参数和普通参数共存时,可变长参数必须放在最后.

a(int ....param1,int param2);





===========================复习===============================

创建消息

Message m=new Message()

Message m=Message.obtain(handler,what,arg1,arg2,obj);//缓存可以直接修改数据使用

Message m=Message.obtain(handler,new Runable(){public void run(){.....}}

handler.obtainMessage(what,arg1,arg2,obj)

handler.post(new Runable(){public void run()[]})//直接发送携带代码的消息


发送

handler.sendMessage(m)

Message.obtain(...).sendToTarget();

handler.obtainMessage(.......).sendTotarget()

handler.sendEmptyMessage(what)

handler.post(Runable)


处理

1,Message的回调,Runable的run();

2,handler的回调,boolean handleMessage() true(不再执行3)

3,handler子类重写的handmessage()


============================AsyncTask===========================

doInbackground() 工作线程

onpostExecute()主线程

publishProgress()工作线程中调用

onprogressUpdate()在主线程显示进度.











0 0
原创粉丝点击