1、intent是作为一个参数传递机制存在的。
(1)它可以向activity传递参数以及Object。(Object需要进行序列化)。
(2)它可以进行系统级别的调用、比如:调起系统拨号页面、调起系统设置等。
(3)intent传递参数的方式:(intent.putString("key","value")、intent.putInt("key","value") 等。)。
2、handler主要是用来在线程中刷新界面(UI)显示的。
Handler 两个关键性用途:
1.可以定时发送 Message 或 Runnable 对象;
1.如何发送延迟消息,2.如何发送循环消息,3.如何发送带参数的消息以及拦截消息。
2.在一个线程处理一个动作。
(1)使用时,需要new handler(){}、在new的时候,里面接收传递的handler的what 值,与传递时给定的静态常亮做一个对应关系,来进行不同的操作。(其中what为int 类型)。
(2)handler中还可以做休眠操作。让线程等待几秒后再运行。(在线程等待时,需要进行try{}catch(Exceptione){}捕捉异常。(在try{}catch(Exception e){}final{}其中finally{}是 不管try和catch走了哪个,都会执行finally{}中的方法。))
(3)在传递handler的时候,可以传递intent类型的值,intent中可以保存数据。然后在new handle(){}的时候进行接收,判断what并执行获取intent中参数的操作。)
主要有四个方法:post(Runnable)、postdelay (Runnable, long)、sendMessage(Message)、sendMessageDelayed(Message, long) ;
要注意的是:Handler 发消息是分为了两种,一种是 Message 对象(sendMessage(Message)),另一种是 Runnable 对象(post(Runnable));而在代码最底层就会发现, Runnable 最后也是被封装成 Message 对象。
**handle出现的原因:
一个 Activity 多个线程更新 UI,而且没有加锁机制,那会怎么样?
会出现更新界面混乱;因为没有加锁,引起了多线程并发问题。
那么我们对更新 UI 的操作进行加锁处理,又会怎么样?
会引起性能下降;每一个加锁的方法都会导致性能有一定的下降。
使用handle的优点:
Android 提供了一套更新 UI 的机制,只需要遵循它就可以,这样我们不用关心多线程并发的问题;所有更新 UI 的操作,都在主线程的消息队列中轮询处理。
**
发送延迟消息