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. linux创建用户名密码等操作

    转自: https://www.linuxidc.com/Linux/2017-06/144916.htm 与大家分享下Linux系统中创建用户.设置密码.修改用户.删除用户的命令,希望对你有所帮助. ...

  2. iOS 10 的一个重要更新-线程竞态检测工具 Thread Sanitizer

    本文介绍了 Xcode 8 的新出的多线程调试工具 Thread Sanitizer,可以在 app 运行时发现线程竞态. 想想一下,你的 app 已经近乎大功告成:它经过精良的打磨,单元测试全覆盖. ...

  3. libev4.15学习

    libev作为优秀的高性能IO框架,非常值得学习! 虽然我是菜鸟,但也必须学习啦,从今天一点一点地学习,慢慢进步! # include "ev.h" struct event_ba ...

  4. 树莓派进阶之路 (008) - 树莓派安装ftp服务器(转)

    vsftpd是开源的轻量级的常用ftp服务器.   1,安装vsftpd服务器 (约400KB) sudo apt-get install vsftpd     2,启动ftp服务 sudo serv ...

  5. Linux安装ElasticSearch-2.2.0

    1.下载ElasticSearch-2.2.0安装包 https://www.elastic.co/downloads/elasticsearch 2.安装ElasticSearch-2.2.0 rp ...

  6. SourceTree 代码库管理工具

    1.SourceTree 简介 SourceTree 是拥有可视化界面的项目版本控制软件,适用于 git 项目管理,window.mac 均可用. 官网下载地址 SourceTree 其它下载地址 S ...

  7. Android Studio找不到FragmentActivity类

    右击项目——>open module settings——>选择第五个选项卡“Dependencies”——>点击加号——>选择第一个Library dependency——& ...

  8. Windows键盘消息处理

    原文链接: http://blog.sina.com.cn/s/blog_5f8817250100taab.html 本文大部分来自MSDN和网友的博客,我在实践的基础上再作了一些总结. 1,虚拟键( ...

  9. 转 Kafka docker

    Kafka 教程 http://haofly.net/kafka/  Posted on 2016-12-23 |  In tools |  |  Views: 224 重要概念 生产者(Produc ...

  10. logstash日志分析的配置和使用(转)

    logstash是一个数据分析软件,主要目的是分析log日志.整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是v ...