Android组件|青训营笔记

112 阅读7分钟

Android组件|青训营笔记

这是我参加「第四届青训营」笔记创作活动第一天

基础组件

1.1界面组件

界面容器Activity

  • onCreate:表示Activity正在被创建,适合做一些初始化工作。实际应用中一般会初始化成员变量和加载布局资源。
  • onRestrat:表示Activity正在被重新启动。一般是从不可见重新变为可见状态是调用。
  • onStart:表示Activity正在被启动,即将开始,此时已经可见,但仍旧在后台,无法与用户交互,虽可见,但是我们还看不到。
  • onResume:表示Activity已经可见了。此时Activity显示到前台。
  • onPause:表示Activity正在停止,此时可以做一些存储数据、停止动画等操作,但不宜太耗时。因为此方法执行完,新的Activity的onResume才会执行。
  • onStop:表示Activity即将停止,此时可以做一些回收工作,同样不能太耗时。
  • onDestroy:表示Activity即将被销毁,此时可以做一些资源释放。
  • onSavelnstnceStart():在非正常关闭时回调,用于保存数据,不支持持永久化数据。
  • onSavelnstnceStart()/onCreate():用于恢复数据

image.png

打开页面顺序为:1-2-3 关闭页面顺序为:4-5-6

image.png

1为部分遮挡 2为遮挡恢复

image.png

1为页面被其他页面全部遮挡了,234表示被遮挡的页面恢复了 image.png

总结

image.png Acticity————的启动模式-singleTaask

  • singlelnstance整个系统不允许重复
  • Standard:默认模式,允许Activity重复
  • SingleTop:栈顶复用,不允许Activity连续重复
  • SingleTask:栈内复用,不允许Activity重复
  • gleinstance:全局复用,系统全局不允许Activity重复

Fragment

image.png 这是在类fragment中你可以重写的方法列表:

  • onAttach(): 碎片实例被关联到活动实例。碎片和活动还没有完全初始化。通常,你在该方法中获取到活动的引用,在碎片将来的初始化工作中被使用。
  • onCreate(): 当创建碎片时,系统调用该方法。你需要初始化一些碎片的必要组件。这些组件是当碎片被暂停、停止时需要保留的,以便被恢复。
  • onCreateView(): 当碎片将要第一次绘制它的用户界面时系统调用该方法。为了绘制碎片的UI,你需要从该方法中返回一个代表碎片根布局的View组件。如果该碎片不提供用户界面,直接返回null。
  • onActivityCreated: 当宿主活动被创建,在onCreateView()方法之后调用该方法。活动和碎片实例与活动的视图层级被创建。这时,视图可以通过findViewById()方法来访问。在这个方法中,你可以实例化需要Context对象的对象。
  • onStart(): 碎片可见时调用该方法。
  • onResume(): 碎片可交互时调用该方法。
  • onPause(): 当首次表明用户将要离开碎片时系统调用该方法。通常,这里你需要提交任何的会超出用户会话的持久化的变化。
  • onStop(): 碎片将要被停止时调用。
  • onDestroyView(): 调用该方法后,碎片将要被销毁。
  • onDestroy(): 该方法被用来清理碎片的状态。但在Android平台并不保证一定被调用。

1.2服务组件

Service 两种状态

StartedAndroid的应用程序组件,如活动,通过startService()启动了服务,则服务是Started状态。一旦启动,服务可以在后台无限期运行,即使启动它的组件已经被销毁。
Bound当Android的应用程序组件通过bindService()绑定了服务,则服务是Bound状态。Bound状态的服务提供了一个客户服务器接口来允许组件与服务进行交互,如发送请求,获取结果,甚至通过IPC来进行跨进程通信。
Service生命周期

image.png

Service(与Activity通信)

  1. 定义binder子类,并实现getService方法,返回Service对象。
  2. 定义服务类onbind(方法,返回上述binder对象)
  3. 实例化serviceConnection对象,实现onserviceConnection()方法,从中获取service实例
  4. Activity中调用bindservice()方法,并传递步骤三的serviceConnection()对象,将流程跑起来
  5. Activity既可以通过service实例中的方法直接通信

1.3广播组件

Broadcast

静态广播

  1. 注册:AndroidManifest中使用< receiver···/><intent-filter.../>
  2. 创建:建立相应的BroadcastReceiver实现类
  3. 接收:在步骤2类onReceiver实现类
  4. 发送:Contect.sendBroadcast()

动态广播

  • 注册:Context.registerReceiver()

常用系统广播

image.png

1.4数据组件

Contenprovider

  • 内容提供者可以让内容集中,必要时可以有多个不同的应用程序来访问。内容提供者的行为和数据库很像。你可以查询,编辑它的内容,使用 insert(), update(), delete() 和 query() 来添加或者删除内容。多数情况下数据被存储在 SQLite 数据库。
  • 内容提供者被实现为类 ContentProvider 类的子类。需要实现一系列标准的 API,以便其他的应用程序来执行事务。

image.png

内容提供者的简单步骤。

  • 首先,你需要继承类 ContentProviderbase 来创建一个内容提供者类。
  • 其次,你需要定义用于访问内容的你的内容提供者URI地址。
  • 接下来,你需要创建数据库来保存内容。通常,Android 使用 SQLite 数据库,并在框架中重写 onCreate() 方法来使用 SQLiteOpenHelper 的方法创建或者打开提供者的数据库。当你的应用程序被启动,它的每个内容提供者的 onCreate() 方法将在应用程序主线程中被调用。
  • 最后,使用<provider.../>标签在 AndroidManifest.xml 中注册内容提供者。

以下是让你的内容提供者正常工作,你需要在类 ContentProvider 中重写的一些方法:

图片

  • onCreate():当提供者被启动时调用。
  • query():该方法从客户端接受请求。结果是返回指针(Cursor)对象。
  • insert():该方法向内容提供者插入新的记录。
  • delete():该方法从内容提供者中删除已存在的记录。
  • update():该方法更新内容提供者中已存在的记录。
  • getType():该方法为给定的URI返回元数据类型。

1.5Android 意图(Intent)和过滤器(Filter)

  • Android意图是一个要执行的操作的抽象描述。它可以通过 startActivity 来启动一个活动,broadcastIntent 来发送广播到任何对它感兴趣的广播接受器组件,startService(Intent) 或者bindService(Intent, ServiceConnection, int) 来与后台服务通讯。
  • 意图本身(一个 Intent 对象)是一个被动的数据结构,保存着要执行操作的抽象描述。
  • 例如,你有一个活动,需要打开邮件客户端并通过 Android 设备来发送邮件。为了这个目的,你的活动需要发送一个带有合适选择器的 ACTION_SEND 到 Android 意图处理者。指定的选择器给定合适的界面来让用户决定如何发送他的邮件数据。
1Context.startActivity():意图传递给该方法,用于启动一个新的活动或者让已存在的活动做一些新的事情。
2Context.startService():意图传递给该方法,将初始化一个服务,或者新的信息到一个持续存在的服务。
3Context.sendBroadcast():意图传递给该方法,信息将传递到所有对此感兴趣的广播接收器。
以下是动作/数据组的一些实例 -
序号动作/数据组和描述
1ACTION_VIEW content://contacts/people/1:显示ID为1的用户的信息。
2ACTION_DIAL content://contacts/people/1:显示电话拨号器,并填充用户1的数据。
3ACTION_VIEW tel:123:显示电话拨号器,并填充给定的号码。
4ACTION_DIAL tel:123:显示电话拨号器,并填充给定的号码。
5ACTION_EDIT content://contacts/people/1:编辑ID为1的用户信息。
6ACTION_VIEW content://contacts/people/:显示用户列表,以便查看。
7ACTION_SET_WALLPAPER:显示选择壁纸设置。
8ACTION_SYNC:同步数据,默认的值为:android.intent.action.SYNC
9ACTION_SYSTEM_TUTORIAL:开启平台定义的教程(默认教程或者启动教程)
10ACTION_TIMEZONE_CHANGED:当时区被改变时通知
11ACTION_UNINSTALL_PACKAGE:运行默认的卸载器

总结:

image.png