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就已经退出了。

Android学习笔记(三)的更多相关文章

  1. android学习笔记三

    GUI==>Graphics User Interface,图形用户界面. android UI 建立在View.ViewGroup基础上,采用组合器设计模式设计View和ViewGoup. V ...

  2. Android学习笔记三:用Intent串联activity

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7513399.html 一:Intent Intent可以理解为 意图. 我们可以通过创建intent实例来定义 ...

  3. android学习笔记三--Activity 布局

    1.线性布局 标签 :<LinearLayout></LinearLayout> 方向:android:orientation, 垂直:vertical 水平:Horizont ...

  4. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  5. 【转】Pro Android学习笔记(三):了解Android资源(上)

    在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源res ...

  6. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  7. udacity android 学习笔记: lesson 4 part b

    udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  8. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  9. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

随机推荐

  1. 使用MyEclipse编写Java程序

    MyEclipse是非常实用的一款Java程序开发工具,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错. My ...

  2. js html 事件冒泡

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. [NOIP2015模拟10.22] 最小代价 解题报告 (最小生成树)

    Description 给出一幅由n个点m条边构成的无向带权图.其中有些点是黑点,其他点是白点.现在每个白点都要与他距离最近的黑点通过最短路连接(如果有很多个黑点,可以选取其中任意一个),我们想要使得 ...

  4. [ SQLServer ] 數字類型的欄位細節 - 轉載

    [MSSQL] 欄位開立(2) - decimal, numeric, float, real, money 的抉擇 https://dotblogs.com.tw/henryli/2015/06/1 ...

  5. PostgreSQL Replication之第七章 理解Linux高可用(1)

    高可用(HA)是工业长期持续的,不间断的服务.在本章,您将了解高可用软件的历史,概念和实现与PostgreSQL复制和高可用之间的关系. 本章将详细地讲述如下主题: •理解高可用性的目的 •衡量可用性 ...

  6. PostgreSQL 系统表

    postgres=# \d pg_class      Table "pg_catalog.pg_class"     Column     |   Type    | Modif ...

  7. C#线程安全打开/保存文件对话框

    在多线程单元模式(MTA)中为应用程序使用.NET OpenFileDialog和SaveFileDialog 下载FileDialogsThreadAppartmentSafe_v1.zip 如果您 ...

  8. Linux下通过rdesktop连接Windows远程桌面

    rdesktop是linux下支持Windows远程桌面连接的客户端程序,在linux系统下可通过它远程访问Windows桌面,支持多种版本.rdesktop是sourceforge下支持GPL协议的 ...

  9. [bzoj4765]普通计算姬(分块+树状数组+DFS序)

    题意 给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权值和.计算姬支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v. 2 ...

  10. python3 geohash 导入错误及解决

    方法一: pip3 install  python-geohash 方法二: 1.保证 pip3 install geohash 包 2. 进入包的下载目录 /usr/local/lib/python ...