ContentProvider简单介绍

ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序须要把自己的数据暴露给其它程序使用时。该应用程序便可通过提供ContentProvider来实现,其它应用程序就可通过ContentResolver来操作ContentProvider暴露的数据。假设某一应用程序通过ContentProvider暴露了自己的数据操作接口,则无论该应用程序是否启动。其它应用程序都能够通过该接口来操作该应用程序的内部数据。包含添加、删除、改动、查询数据。

android:authorities属性

   定义好的ContentProvider类必须在AndroidManifest.xml里声明后才干使用,声明中必须加入授权属性

android:authorities。相当于为该ContentProvider指定域名,Content uri中content://authority/optionalPath/optionalId的authority部分便是android:authorities属性指定的值。

属性值定义的方法为包名+ “.”+ 该ContentProvider的名称。

Service本身存在的两个问题

1. Service不会专门启动一条单独的进程,Service与它所在应用处于同一个进程中。

2. Service不是一条新的线程。因此不应该在Service中直接处理耗时的操作。耗时的操作应该开启一个新的线程来处理。

处理耗时任务的问题

假设就开发这须要在Service模块中处理耗时任务,通常是在Service中另外启动一条新线程来处理,但不能在其它应用程序组件中启动子线程来处理,由于Activity可能会被用户退出、BroadcastReceiver的生命周期非常短。非常有可能出现子线程还没有结束。Activity已经被用户退出,或者BroadcastReceiver已经结束,出现空线程的情况。

IntentService简单介绍

IntentService可以弥补Service本身的两个缺陷: IntentService会使用队列来管理请求的Intent,每当client代码通过Intent请求启动IntentService时。IntentService会将该Intent增加队列中,然后开启一条新的worker线程来处理该Intent,对于异步的startService()请求。IntentService会按次序依次处理队列中的Intent,该线程保证同一时刻仅仅处理一个Intent。

因为IntentService使用新的worker线程处理Intent请求,因此IntentService不会堵塞主线程,所以IntentService自己便能处理耗时的任务。

静态代码块

即类中不包括不论什么方法体的静态代码块,其格式一般为static{…}。这样的静态代码块仅仅在类被载入时运行,并且仅仅运行一次。

静态代码块一般用来运行类属性的初始化。

getResources().getStringArray(…)作用

getResources().getStringArray(R.array.setting)是获取应用程序中数组资源的方法。即假设要使用应用程序中定义的数组资源,须要使用getResources().getStringArray(R.array.*),其返回值为一个数组。

TelephonyManager服务类的getXxx()方法举例

1.TelephonyManager.getDeviceId()                      //获取设备的编号

2.TelephonyManager.getDeviceSoftwareVersion()           //获取系统平台的版本号

3.TelephonyManager.getNetworkOperator()                //获取网络运营商代号

4.TelephonyManager.getNetworkOperatorName()           //获取网络运营商名称

5.TelephonyManager.getPhoneType()                     //获取手机网络类型

6.TelephonyManager.getCellLocation()                    //获取设备所在位置

7.TelephonyManager.getSimCountryIso()                  //获取SIM卡的国别

8.TelephonyManager.getSimSerialNumber()                //获取SIM卡序列号

9.TelephonyManager.getSimState()                       //获取SIM卡状态

返回值的类型都是String类型。

通话状态监听器PhoneStateListener简单介绍

PhoneStateListener是通话状态监听器,定义该监听器时必须实现onCallStateChanged(intstate, String number)方法。通话状态的主要静态常量: int CALL_STATE_IDLE  //空暇状态,没有不论什么活动    int CALL_STATE_OFFHOOK  //摘机状态。至少有个电话活动,该活动或是拨打或是通话,或者是on hold。而且没有电话是ringing or waiting   intCALL_STATE_RINGING //来电状态。电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。

获取短信管理器的方法

SmsManager sManager= SmsManager.getDefault();     //由此方法获取应用程序的SmsManager

PendingIntent对象简单介绍

PendingIntent对象是对Intent的包装,一般通过调用PendingIntent的getActivity()、getService()、getBroadcastReceiver()静态方法来获取PendingIntent对象。与Intent对象不同的是。PendingIntent一般会传给其它应用组件,从而由其它应用程序来运行PendingIntent所包装的Intent。

BroadcastReceiver简单介绍

BroadcastReceiver属于系统级的监听器,拥有自己的进程,仅仅要存在与之匹配的Intent被广播出来。BroadcastReceiver就能被激发。

当被激发后,会自己主动触发它的onReceive()方法,onReceive()方法运行完毕后。BroadcastReceiver的实例便会被销毁。与Activity组件不同的是,当系统通过Intent启动指定的Activity组件时,假设没有找到合适的Activity组件,会导致程序异常终止。但系统通过Intent激发BroadcastReceiver时,假设找不到合适的BroadcastReceiver组件,应用不会有不论什么问题。此外,不能在onReceive()中运行耗时的操作,能够考虑通过Intent启动一个Service来完毕该操作。但不能使用新线程完毕耗时的操作。由于BroadcastReceiver本身的生命周期非常短,可能出现子线程还没结束,BroadcastReceiver就已经退出了。

最新文章

  1. windows socket
  2. 《理解 ES6》阅读整理:函数(Functions)(六)Purpose of Functions
  3. FlyCapture2 VS2010 Configuration
  4. Remote 的远程使用
  5. SQLServer2005 提示 '其他会话正在使用事务的上下文'
  6. javascript函数没有重载测试
  7. string.Format 日期格式化
  8. 【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)
  9. maven报错cannot change version of project facet
  10. <转>maven发布第三方jar的一些问题
  11. fragment中listview触发事件setOnItemClickListener不好使
  12. C++中怎样获取类成员的指针
  13. ASP.NET Zero--基础设施
  14. HTML5-Input
  15. Linux下maven安装
  16. portfolio
  17. JQuery复制内容到剪切板-jquery.zclip.js的使用,在公司项目中
  18. 【大数据系列】基于MapReduce的数据处理 SequenceFile序列化文件
  19. Windows(x64)编译FFMPEG-2.0.1
  20. php中直接执行mysqli_init()也是报Property access is not allowed yet的错误。

热门文章

  1. js如何实现简繁体互转
  2. 如何将网站升级为HTTPS协议(整理)
  3. 查询目标的ip地址和详细地理信息(多种方法)
  4. leetcode 新题型----SQL,shell,system design
  5. sql查询每个学生的最高成绩mysql语句
  6. java连接操作Oracle
  7. c++几种排序算法代码
  8. 服务器TCP连接中 TIME_WAIT 状态过多
  9. 在 yii2.0 框架中封装导出html 表格样式 Excel 类
  10. 20180929 北京大学 人工智能实践:Tensorflow笔记03