【Android】安卓闪电复习

Intent

  An intent is an abstract description of an operation to be performed
  一个Intent就是一次对将要执行的操作的抽象描述。

使用Service的方式

  Started
  startService():调用者和服务之间没有联系,即使调用者退出了,服务仍然进行 [onCreate()-->onStart()-->startService()-onDestory()]
  Bound
  bindService():调用者和服务绑在一起,调用者一旦退出服务也就终止[onCreate()-->onBind()-->onUnbind()-->onDestory()]

  通过startService()使用Servic

  编写类继承Service或其子类

  复写方法
    onStartCommand() onBind() onCreate() onDestroy()
  在manifest文件中声服务
    <service android:name=".Service" />
  启动服务
  关闭服务

什么是Bound Services

  Bound service 允许其它的组件(比如Activities)绑定到这个Service上,可以发送请求,也可以接受请求,甚至进行进程间的通话。

  Bound service 仅仅在服务于其它组件时存在,不能独自无限期的在后台运行。

创建Bound Services

  当创建一个能提供绑定功能的服务时,我们必须提供一个IBinder对象,客户端能使用这个对象与服务进行交互。

  在Android中有三种方式定义方式

1.扩展Binder类
2.使用Messenger
3.使用AIDL (Android Interface Definition Language)

  通过扩展Binder类创建Bound Services
  步骤
  a.在Service类中,创建一个Binder实例
    包含客户端能调用的公共方法
    返回当前服务对象
  b.在onBind()方法中返回Binder实例
  c.在客户端,从onServiceConnected()方法中获得Binder实例,

MessageQueue

  消息队列,存放消息的地方,按照FIFO规则执行,每一个线程只可以拥有一个MessageQueue。在创建Looper对象会创建一个MessageQueue对象。

Message

  消息对象,MessageQueue中存放的对象。

  一个MessageQueue中可以包含多个Message对象。可以通过Message.obtain()或者Handler.obtainMessage()获取Message对象。但是这并不一定是直接创建一个新的实例,而是先从消息池中看有没有可用的Message实例,存在则直接取出返回这个实例。如果消息池中没有可用的Message实例,则才用给定的参数创建一个Message对象。

  调用removeMessages()时,将Message从MessageQueue中删除,同时放入到消息池中。

Looper

  操作MessageQueue。

  一个Looper对应一个MessageQueue。通过调用Looper.myLooper()可以获得当前线程的Looper对象。

  Looper从MessageQueue中取出Message然后,交由Handler的handleMessage()进行处理。处理完成后,调用Message.recycle()将其放入消息池中。

Handler

  消息的处理者。

  handler负责将需要传递的信息封装成 Message对象,然后调用sendMessage()方法将消息放入MessageQueue中。

  当MessageQueue循环到该Message,调用相应的handler对象的handleMessage()方法对其进行处理。Handler都可以共享同一Looper和MessageQueue。

Status Bar Notifications

  status bar notification添加一个icon到系统的状态栏中(可选择是否有文本信息),添加一段信息到"Notifications" 窗口中。
  当在后台运行的服务需要与用户进行交互时我们可以使用status bar notification。  

创建notification
Notification
NotificationManager

Broadcast Receiver

  广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别,而广播事件处理机制是系统级别。

使用Broadcast Receiver

1.编写类继承BroadcaseReceiver,复写onReceiver()方法
2.在AndroidManifest.xml文件中注册BroadcaseReceiver
3.构建Intent对象
4.调用sendBroadcase()方法发送广播

BroadcaseReceiver生命周期

  BroadcastReceiver对象仅在调用onReceive()方法时有效,当该方法执行完毕后,系统认为销毁该对象

注册Broadcast Receiver的方法

  1. 在AndroidManifest.xml文件中进行注册
  2. 在应用程序的代码中进行注册

在应用程序的代码中进行注册

  1. 注册BroadcastReceiver
  2. registerReceiver()
  3. 取消注册BroadcastReceiver
  4. unregisterReceiver()

Android数据存储方式

  1. SQLite数据库
  2. 文件
  3. Shared Preferences
  4. 内容提供者(Content Providers)
  5. 网络

SQLite数据类型

  一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。

  SQLite具有以下五种数据类型:

1.NULL:空值。
2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。
3.REAL:浮点数字,存储为8-byte IEEE浮点数。
4.TEXT:字符串文本。
5.BLOB:二进制对象。

基本SQL命令

create
insert
update
select
delete
order by
group by
having
limit

文件操作两个方法

  1.openFileOutput (String name, int mode)
    name:文件的名称,不能包含分隔符"/",如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/<package_name>/files目录下。
    mode:操作模式
  2.openFileInput (String name)
    Mode

MODE_APPEND
  如果文件中已经存在内容,则在内容末尾追加
MODE_PRIVATE
  文件仅能被该程序访问
MODE_WORLD_READABLE
  文件允许被其它应用程序读
MODE_WORLD_WRITEABLE
  文件允许被其它应用程序写
MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE

Content Providers

  Content Providers 是所有应用程序之间数据存储和检索的一个桥梁,作用是使得各个应用程序之间实现数据共享

  它是应用程序间共享数据的唯一方法。在Android中没有一块公共的所有应用程序都能访问的数据存储地方。

URI

  每个content provider有一个公有URI, 该URI用于识别它所代表的数据集合。 所有的content provider的URI以字符串"content://"开始.

Content Providers可以做什么

1.query()
2.insert()
3.update()
4.delete()
5.getType()

前提条件

  存在一个用于存放数据的系统

实现步骤

  1.定义一个继承 ContentProvider的类
  2.声明一个Uri类型的常量CONTENT_URI
  3.实现query()、insert()、update()、delete()、getType()、onCreate()
  4.在AndroidManifest.xml文件中进行声明

GET请求方式

  GET方式:通过把参数键值对附加在url后面来传递的。在服务器端可以直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据,长度有限制。

  主要用于传递简单的参数。

POST请求方式

  POST方式:就传输方式讲参数会被打包在http报头中传输,可以是二进制的。便于传送较大一些的数据,同时因为不暴露数据在浏览器的地址栏中,安全性相对较高,但这样的处理效率会受到影响。

TabWidget控件

  TabWidget通过多个标签切换显示不同的内容。

  要实现这一效果,我们需先了解TabHost,它是一个存放多个Tab标签的容器。每个Tab都可以对应自己的布局。

通知用户的三种方式

  1. Toast Notification
  2. Dialog Notification
  3. Status Bar Notification

创建Status Bar Notifications

  Notification
    定义Status Bar的属性,比如图标、显示文本等。
  NotificationManager
    NotificationManager是Android系统服务,用来执行和控制所有的Notifications
  Status Bar Notifications特殊效果
    铃声
    震动
    闪光

PendingIntent和Intent的区别

  Intent 表示一个目的,第一个参数表示所在类,第二个参数表示目标类
  PendingIntent即是一个Intent的描述
  PendingIntent和Intent的区别:
  PendingIntent就是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情。
  换种说法Intent字面意思是意图,即我们的目的,我们想要做的事情,在Activity中,我们可以立即执行它,PendingIntent相当于对Intent执行了包装,我们不一定要马上执行它,我们将其包装后,传递给其他Activity或Application。这时,获取到PendingIntent的Application 能够根据里面的Intent来得知发出者的意图,选择拦击或者继续传递或者执行。

Menu

  1. Options menus
  2. Sub menus
  3. Context menus
原文地址:https://www.cnblogs.com/lcw/p/3342914.html