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

【Android】安卓闪电复习相关推荐

  1. android imap开发,企业邮箱在Android(安卓)系统手机上POP3/IMAP协议如何设置

    企业邮箱在Android(安卓)系统手机上POP3/IMAP协议如何设置 我们已经推出了自己研制的手机客户端,具备高兼容性,不需需配置,输入企业邮箱地址和密码直接登录使用.了解详情> 直接扫码下 ...

  2. android设备如何苹果,Android安卓设备如何连接Mac的方法

    Android安卓设备如何连接Mac的方法 本篇文章主要给大家总结了安卓设备连接MAC电脑的方法以及中间遇到连接问题以后的处理办法. 平时大家用到最多的就是安卓手机和苹果电脑互连,由于安卓系统应用广泛 ...

  3. Linux基础——怎么样从手机 (Android安卓/IOS苹果) 通过 SSH 远程 Linux

    文章目录 1.前言 2.给 Linux 安装 OpenSSH 3.手机 SSH 的 app 1.前言 如果有时候身边没有第二台电脑, 我们完全可以用一台手机来控制你的 Linux. 不管是 iPhon ...

  4. Android安卓拖拉机版Docker

    Android安卓拖拉机版Docker 为什么说是拖拉机,因为性能真的狠拖拉机- 各种嵌套安装才能垃起docker termux → qemu → alpine linux → docker 一:安装 ...

  5. Android安卓手机版火狐浏览器设置简洁主页

    Android安卓手机版火狐浏览器设置简洁主页 以下内容全部为本人原创.测试过,非网络复制粘贴文本. 写作时间:2018年9月 安卓系统版本:8.1.0 手机品牌:华为 Firefox版本:62.0. ...

  6. Android安卓-UI自动打卡Appium+PO+Pytest(1)

    Android安卓-UI自动打卡Appium+PO+Pytest 背景 环境配置 pytest初始化设置 封装驱动 建立测试用例 test_open.py 建立对应用例的页面对象文件PO open_p ...

  7. android 动画 最顶层_【尼康影像学院】使用SnapBridge连接照相机与智能手机(Android安卓系统)...

    通过视频为您介绍尼康相机使用SnapBridge连接照相机与智能手机的顺序. 支持的数码照相机 支持Wi-Fi直连:Z 7, Z 6, Z 50, D850, D780, D500, D7500, D ...

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

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

  9. 【Windows 11】系统安装修改版 Subsystem for Android 安卓子系统,并用 Magisk Root

    目录 步骤 1. 卸载已安装的Window Subsystem for Android 官方版本 2. 启用"Hyper-V" 和 "虚拟机平台" 3. 查看 ...

  10. Android安卓成品项目 购物商城系统源码apk

    Android安卓成品项目 购物商城系统源码apk 安卓源码,成品项目,单机不联网项目,包含项目报告 登录注册,展示和修改个人信息,全部商家列表,讨论功能,添加购物车,联系,付款,查看订单记录,账户充 ...

最新文章

  1. AttributeError: module 'tensorflow' has no attribute 'random_normal'
  2. SAP WMS Posts
  3. 18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
  4. 读入的字节都写入字节数组中_使用Java将文件读入字节数组的7个示例
  5. 剑指Offer - 翻转单词顺序列
  6. PHP实现今天是星期几的几种写法
  7. 微信小程序左右菜单mysql_微信小程序tab左右滑动切换功能的实现代码
  8. .net ajax 保存文件,.net ajax式上传文件
  9. linux java7 64位_linux jdk1.7 64位tar.gz下载安装配置教程(完美版)
  10. 2021 年前端宝典【超三百篇】
  11. 《JavaScript DOM编程艺术》知识整理
  12. PHP之字符串常用函数
  13. 菲尼克斯电源模块的安装
  14. 支持中文编程、汉语编程的国产C语言编程工具 - 习语言4717版发布
  15. centos7.5安装mysql数据库_CentOS7.5安装Mysql5.7.22
  16. numpy 之average
  17. 对称加密php,PHP实现对称加密与解密
  18. uni-app 微信小程序启用组件按需注入
  19. 串口编程DCB结构体参数配置详细说明
  20. 高维内积的数学符号括弧

热门文章

  1. 南昌项目中镜像系统时遇到的问题
  2. UBUNTU使用五笔98输入法
  3. 从盆景与景观看中西文化差异
  4. 看了有多个人格的人,自己拍的视频
  5. 错误解决办法:zipimport.ZipImportError: can't decompress data; zlib not available
  6. 播放视频时有残影、水纹的原因
  7. python中把输出结果写到一个文件中_python 文件中字符串过滤,并将结果输出到另一个文件中(源码)...
  8. php 5.2 spl_autoload_register,PHP 中的__autoload() 与spl_autoload_register()函数
  9. matlab中TCR触发,TCR+FC型SVC的研究及MATLAB仿真
  10. python函数传递列表_python传递列表作为函数参数