zoukankan      html  css  js  c++  java
  • 疯狂Android讲义

    第10章 Service与BroadcastReceiver

    10.1 Service简介

    Service组件也是可执行的程序,有自己的生命周期,创建、配置Service与创建、配置Activity的过程基本相似。Service一直在后台运行,没有用户界面。

    10.1.1 创建、配置Service 需要2个步骤:1 定义基础Service的子类,2 在AndroidManifest.xml文件中配置Service。

    Service与Activity都是从Context派生出来的,因此都可以调用Context的方法:getResource()、getContentResolver()等。

    Service也定义了系列生命周期方法,与Activity相似。 

    10.1.2 启动和停止Service  通过Context的startService()方法启动,通过stopService方法关闭。

    多次启动一个已有的Service组件将不会再回调onCreate方法,但每次启动时都会回调onStartCommend方法。 

    10.1.3 绑定本地Service并与之通信  通过Context的bindService方法启动,通过unbindService方法关闭

    开发的Service类必须提供一个IBinder onBind(Intent intent) 方法,这个方法返回的IBinder对象会传给ServiceConnection对象。

    IBinder对象相当于Service组件的内部钩子或代理对象,其他程序组件通过该IBinder对象访问Service内部的数据,从而实现客户端与Service之间的实时通信。 

    开发中通常采用继承Binder(IBinder的实现类) 的方式实现自己的IBinder对象。

    源码1010.1BindService) 

    10.1.4 Service的生命周期

    如果调用bindService()绑定一个已启动的Service时,系统只会把Service内部的IBinder对象传给Activity,并不会把Service生命周期绑定到给Activity,因此当改Activity调用unBindService()时,只是切断该Activity与Service之间的关联,并不会停止该Service组件。 

    10.1.5 使用IntentService  这是Service的子类,增加了额外的功能

    Service存在的问题:Service不会专门启动一条单独的进程,Service与它所在的应用位于同一个进程中;Service也不是专门一条新的线程,不应该在Service中处理耗时的任务。 

    IntentService正好可以弥补Service的上述两个不足。IntentService为每一个Intent请求开启一个worker线程来处理该Intent。

    当所有请求处理完成后,IntentService会自动停止,因此开发者无需调用方法来停止该Service。 

    扩展IntentService实现Service无须重写onBind、onStartCommand方法,只要重写onHandleIntent方法即可。 

    源码1010.1IntentServiceTest) 

    10.2 跨进程调用Service(AIDL Service) 

    为了实现跨进程通信(IPC), Android提供了AIDL Service。

    10.2.1 AIDL Service简介 

    10.2.2 创建AIDL文件 

    10.2.3 将接口暴露给客户端 

    10.2.4 客户端访问AIDL Service 

    10.3 电话管理器(TelephoneManager) 

    源码1010.3TelephonyStatus  获取网络和SIM卡信息) 

    10.4 短信管理(SmsManager) 

    10.5 音频管理器(AudioManager)

    10.6 振动器(Vibrator) 

    10.7 手机闹钟服务(AlarmManager) 

    10.8 接收广播消息

    BroadcastReceiver本质上就是一种全局的监听器,它可以方便地实现系统中不同组件之间的通信。

    10.8.1 BroadcastReceiver简介

    10.8.2 发送广播 

    源码1010.8Broadcast) 

    10.8.3 有序广播 

    10.9 接收系统广播消息

    源码1010.9LaunchService 开机自动运行的Service

    源码1010.9MonitorSms 短信提醒

    源码1010.9MonitorBattery 手机电量提示) 

    第13章 Android网络应用

    Android完全支持JDK本身的TCP、UDP网络通信API,也可以使用ServerSocket、Socket来建立基于TCP/IP协议的网络通信。

    13.1.3 使用Socket进行通信 

    源码1313.1SimpleClient) 

    13.2 使用URL访问网络资源 

    源码1313.2GetPostTest) 

    13.3 使用HTTP访问网络 

    13.3.1 使用HttpURLConnection

    13.3.2 使用ApacheHttpClient 

    13.4 使用WebView视图显示网页 

    13.4.1 使用WebView浏览网页 

    13.4.2 使用WebView加载HTML代码 

    13.4.3 使用WebView中的JavaScript调用Android方法 

  • 相关阅读:
    C++ Primer 随笔 Chapter 2 变量和基本类型
    比较全面的gdb调试命令 (转载)
    open和fopen的区别(转)
    来了
    Function语义学之member function
    TCP/IP学习(四)TCP缓冲区大小及限制(转)
    TCP连接的建立和终止
    Data 语义学(2)
    Data 语义学(1)
    一个类到底有多大?
  • 原文地址:https://www.cnblogs.com/busor/p/3792256.html
Copyright © 2011-2022 走看看