A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

泄密:黑马Android内部压轴技术面连载现世(四)

涨薪机密——潮流新技术、新框架资源以后不定期更新,
  


16. 什么时候使用Service?
        startForeground(id, notification)
        拥有service的进程具有较高的优先级
        官方文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该service已经被启动(start)或者客户端连接(bindService)到它。当内存不足时,需要保持,拥有service的进程具有较高的优先级。
        1. 如果service正在调用onCreate,  onStartCommand或者onDestory方法,那么用于当前service的进程相当于前台进程以避免被killed。
        2. 如果当前service已经被启动(start),拥有它的进程则比那些用户可见的进程优先级低一些,但是比那些不可见的进程更重要,这就意味着service一般不会被killed.
       3. 如果客户端已经连接到service (bindService),那么拥有Service的进程则拥有最高的优先级,可以认为service是可见的。
       4. 如果service可以使用startForeground(int, Notification)方法来将service设置为前台状态,那么系统就认为是对用户可见的,并不会在内存不足时killed。
       如果有其他的应用组件作为Service,Activity等运行在相同的进程中,那么将会增加该进程的重要性。
       1.   Service的特点可以让他在后台一直运行,可以在service里面创建线程去完成耗时的操作.
       2.   Broadcastreceiver捕获到一个事件之后,可以起一个service来完成一个耗时的操作.
       3.   远程的service如果被启动起来,可以被多次bind,但不会重新create.  索爱手机X10i的人脸识别的service可以被图库使用,可以被摄像机,照相机等程序使用.

17. 请描述一下Intent 和 Intent Filter。
       Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。
        通过Intent 可以实现各种系统组件的调用与激活.  
        Intent filter: 可以理解为邮箱
        这个分拣系统通过3个参数来识别
        Action: 动作    view
        Data: 数据uri   uri
        Category : 而外的附加信息
        Action 匹配
        Action 是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 Intent Filter 可以包含多个 Action。在 AndroidManifest.xml 的 Activity 定义时可以在其 <intent-filter >节点指定一个 Action 列表用于标示 Activity 所能接受的“动作”,例如:
       <intent-filter >
       <actionandroid:name="android.intent.action.MAIN" />
       <action android:name="cn.itcast.action"/>
            ……
       </intent-filter>
       如果我们在启动一个 Activity 时使用这样的 Intent 对象:
        Intent intent =new Intent();
        intent.setAction("cn.itcast.action");
       那么所有的 Action 列表中包含了“cn.itcast”的 Activity 都将会匹配成功。
       Android 预定义了一系列的 Action 分别表示特定的系统动作。这些 Action 通过常量的方式定义在 android.content. Intent中以“ACTION_”开头。我们可以在 Android 提供的文档中找到它们的详细说明。

      URI 数据匹配:
      一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter >节点中,通过 <data/>节点匹配外部数据。
     mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定数据的位置、端口、和路径。如下:
         <data android:mimeType="mimeType"android:scheme="scheme"
         android:host="host"android:port="port" android:path="path"/>
         电话的uri  tel: 12345
         http://www.baidu.com
         自己定义的uri itcast://cn.itcast/person/10
        如果在 Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会成功。
        Category 类别匹配
        <intent-filter >节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表的所有项目时 Category 类别匹配才会成功。
       默认是DEFAULT。
18. Intent传递数据时,可以传递哪些类型数据?
       1.一般的基本数据类型  Intent .putextra()intent.getextra();
       2.数据的uri, intent.setData() intent.getData();

其他精华资源推荐:



评分

参与人数 2黑马币 +3 收起 理由
TommingYu + 2 很给力!
Java好久不见 + 1

查看全部评分

49 个回复

正序浏览
表示看不懂···
回复 使用道具 举报
先mark下吧,以后可能用得着
回复 使用道具 举报
摸不着头脑···
回复 使用道具 举报
好东西,谢谢分享
回复 使用道具 举报
非常好,继续加油哈
回复 使用道具 举报
不错啊 长见识了
回复 使用道具 举报
好东西!不错不错!收藏起来
回复 使用道具 举报
有木有关于javaEE的学习路线,或者技术分享
回复 使用道具 举报
不错的总结》》
回复 使用道具 举报
先收藏先。
回复 使用道具 举报
期待 就业班所学的内容
回复 使用道具 举报
guyue 中级黑马 2016-6-24 22:58:59
37#
赶紧收起来,别让别人看见
回复 使用道具 举报
顶一顶 赞一赞
回复 使用道具 举报
写得好  已收藏
回复 使用道具 举报
太好了    !  棒棒棒  棒棒棒  棒棒棒  棒棒棒
回复 使用道具 举报
w1599928008 来自手机 中级黑马 2016-6-23 23:40:39
33#
虽然现在还是基础班,先收藏了
回复 使用道具 举报
干活,给力
回复 使用道具 举报
有用  赞一个
回复 使用道具 举报
非常的赞~!!!!!!!!!!!!!!!!
回复 使用道具 举报
S.. 来自手机 初级黑马 2016-6-23 08:44:20
29#
好东西,感谢楼主分享
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马