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

【Android】安卓闪电复习的更多相关文章

  1. Android安卓身份证识别SDK

    一.Android安卓身份证识别SDK应用背景 这些年,随着互联网金融的极速发展,第三方支付.理财.P2P网贷.征信等APP应用成爆发式的增长,在众多APP中都涉及到对身份证信息的录入,如第三方支付. ...

  2. android安卓生成密钥keystore(命令控制)

    android安卓生成密钥keystore(命令控制) • 配置JDK 详细教程 https://blog.csdn.net/u012934325/article/details/73441617/ ...

  3. Android安卓手机游戏开发

    成都传智播客Java培训,免费学Android安卓手机游戏开发,安卓android开发课程包括Android安卓应用开发和Android安卓游戏开发两个方向,可是偏向游戏开发. 依据"199 ...

  4. EasyRTMP Android安卓手机直播推流摄像头偏暗的问题解决

    在我们测试EasyRTMP Android安卓手机推流的过程中发现有些设备预览时,明显偏暗!在稍微暗点的环境中几乎很难看清东西-额,这是怎么回事呢?又是安卓设备的兼容性问题,头疼! !!!好吧,停止抱 ...

  5. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台

    前言 随着Android系统的不断更新和发展,现在越来越多的硬件产品选择用安卓系统作为运行环境,电视机,机顶盒.门禁.行车记录仪.车载系统.单兵设备等等,Android系统底层还是Linux,但对上层 ...

  6. lighttpd + php for android 安卓上的WEB服务器

    lighttpd + php for android 安卓上的WEBSER 这个项目在 http://hex.ro/wp/blog/php-and-lighttpd-for-android 目前不支持 ...

  7. 微信4.5 for Android安卓内测版体验【实时对讲】杀手级应用下载

    微信4.5 for Android 安卓 内测版 体验 程序启动画面,是一支在动的烛光 主要功能更新如下 支持语音提醒,到时间后自动弹出消息框 发起语音提醒请求 成功识别语音请求,并且保存在本地,应该 ...

  8. 如何在 Android 安卓手机上运行 Node.js 应用 | 如何在安卓手机配置node开发环境

    最近在学习js,由于没法随身携带笔记本电脑,在手机翻阅<JavaScript高级程序设计>时,时常想调试一下书中的代码.于是就有了,能否在手机上配置一个js开发环境.考虑到手机上的Chro ...

  9. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

随机推荐

  1. [转载]将archlinux&nbsp;2013-06-01版,安装配置为个人工作站

    原文地址:将archlinux 2013-06-01版,安装配置为个人工作站作者:老圃无蔓 安装所使用的镜像为:archlinux-2013.06.01-dual.iso.首先请看看我安装完成之后的效 ...

  2. samba服务的高级进阶配置

    本文将学习一下几个方面的内容,将会结合具体的实验来一步步实现. 1. 用户账号的映射 2. 使用IP对客户端进行访问控制 3. 使用域名对客户端进行访问控制 4. 使用通配符对客户端进行访问控制 5. ...

  3. keras callback中的stop_training

    keras这个框架简洁优美,设计上堪称典范.而tensorflow就显得臃肿庞杂,混乱不清.当然,keras的周边部件比如callbacks.datasets.preprocessing有许多过度设计 ...

  4. 推荐系统 SVD和SVD++算法

    推荐系统 SVD和SVD++算法 SVD:   SVD++: [Reference] 1.SVD在推荐系统中的应用详解以及算法推导 2.推荐系统——SVD/SVD++ 3.SVD++ 4.SVD++协 ...

  5. Java 过滤特殊字符的 正则表达式

    Java正则表达式学习: 因为正则表达式是一个很庞杂的体系,此例仅举些入门的概念,更多的请参阅相关书籍及自行摸索. \\ 反斜杠 \t 间隔 ('\u0009') \n 换行 ('\u000A') \ ...

  6. socket编程及API简介

    什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域 ...

  7. HDU 4324 Triangle LOVE (拓扑排序)

    Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  8. webpack window 安装loader

    1.安装loadernpm install css-loader style-loader --save-dev 2.配置loader,在webpack.config.js中 module: { lo ...

  9. C++下的命名空间

    转自:http://blog.chinaunix.net/uid-24219701-id-2105573.html 实例: #include <iostream> using namesp ...

  10. python学习笔记——urllib库中的parse

    1 urllib.parse urllib 库中包含有如下内容 Package contents error parse request response robotparser 其中urllib.p ...