【Android】从入门到中级 下

学习ing 

    http://www.runoob.com/android/android-intents-filters.html

感谢菜鸟教程,本菜还要继续学习,时间还不够

Android - 内容提供者(Content Provider)

    通过请求从一个应用程序向其他的应用程序提供数据,这些请求由类 ContentResolver 的方法来处理,内容提供者可以使用不同的方式来存储数据;

   内容提供者为类 ContentProvider 类的子类,行为和数据库很像

内容URI:指定查询字符串

格式:<prefix>://<authority>/<data_type>/<id>
部分 说明
prefix 前缀:一直被设置为content://
authority 授权:指定内容提供者的名称,例如联系人,浏览器等。第三方的内容提供者可以是全名,如:cn.programmer.statusprovider
data_type 数据类型:这个特殊的内容提供者中的数据的类型。例如:你要通过内容提供者Contacts来获取所有的通讯录,数据路径是people,那么URI将是下面这样:content://contacts/people
id 这个指定特定的请求记录。例如:你在内容提供者Contacts中查找联系人的ID号为5,那么URI看起来是这样:content://contacts/people/5

创建内容提供者

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

Android 碎片(Fragment)

碎片是活动的一部分,是一种子活动,模块化设计

重要知识点

  • 碎片拥有自己的布局,自己的行为及自己的生命周期回调
  • 当活动在运行的时候,你可以在活动中添加或者移除碎片
  • 合并多个碎片在一个单一的活动中来构建多栏的UI
  • 碎片可以被用在多个活动中
  • 生命周期和它的宿主活动紧密关联:活动被暂停,所有活动中的碎片被停止
  • 可以实现行为而没有用户界面组件
  •  Android API 版本11中被加入到 Android API

继承 Fragment 类来创建碎片,可以通过使用 元素在活动的布局文件中声明碎片来在你的活动中插入碎片

     当运行在在平板尺寸的设备上,这个应用程序可以在活动A中嵌入两个碎片。在手机设备屏幕上,由于没有足够的空间,活动A仅包含有文章列表的碎片,当用户点击文章时,启动包含第二个碎片的活动B来阅读文章。

碎片的生命周期

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

如何使用碎片?

  1. 决定在活动中需要使用多少个碎片:如需要使用两个碎片来处理设备的横屏和竖屏两种模式。
  2. 基于碎片数量,创建继承自类Fragment的类。类Fragment包含上面提到的回调函数。根据你的需求重写任意的方法。
  3. 对应每个片段,你需要在XML文件中创建布局。这些文件中包含已定义的碎片的布局。
  4. 基于需求修改活动文件来定义实际的碎片替换逻辑

碎片类型

  • 单帧碎片 - 单帧碎片被如移动电话之类的手持设备使用。一个碎片如同一个视频一样显示。
  • 列表碎片 - 包含有特殊列表视图的碎片被叫做列表碎片
  • 碎片过渡 - 与碎片事务一起使用。可以从一个碎片移动到另外一个碎片

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

     Android意图是一个要执行的操作的抽象描述。它可以通过 startActivity 来启动一个活动,broadcastIntent 来发送广播到任何对它感兴趣的广播接受器组件,startService(Intent) 或者bindService(Intent, ServiceConnection, int) 来与后台服务通讯。

     意图本身(一个 Intent 对象)是一个被动的数据结构,保存着要执行操作的抽象描述。

序号 方法和描述
1 Context.startActivity():意图传递给该方法,用于启动一个新的活动或者让已存在的活动做一些新的事情。
2 Context.startService():意图传递给该方法,将初始化一个服务,或者新的信息到一个持续存在的服务。
3 Context.sendBroadcast():意图传递给该方法,信息将传递到所有对此感兴趣的广播接收器。

意图对象

    一包的信息,用于组件接收到的意图就像 Android 系统接受到的信息

    具体取决于要通信或者执行什么

动作(Action)

    必须的部分,被表现为一个字符串。在广播的意图中,动作一旦发生,将会被报告。动作将很大程度上决定意图的其他部分如何被组织。Intent 类定义了一系列动作常量对应不同的意图。这里是一份Android意图标准动作 列表。

     意图对象中的动作可以通过 setAction() 方法来设置,通过 getAction() 方法来读取。

数据(Data)

    添加数据规格到意图过滤器。这个规格可以只是一个数据类型(如元类型属性),一条 URI ,或者同时包括数据类型和 URI 。 URI 则由不同部分的属性来指定。

    指定 URL 格式的属性是可选的,但是也相互独立

  • 如果意图过滤器没有指定模式,所有其他的 URI 属性将被忽略。
  • 如果没有为过滤器指定主机,端口属性和所有路径属性将被忽略

setData() 方法只能以 URI 来指定数据,

setType() 只能以元类型指定数据,

setDataAndType() 可以同时指定 URI 和元类型。

URI 通过 getData() 读取,类型通过 getType() 读取。

类别

     类别是意图中可选的部分,是一个字符串,包含该类型组件需要处理的意图的附加信息

addCategory() 方法为意图对象添加类别,

removeCategory() 方法删除之前添加的类别,

getCategories() 获取所有被设置到意图对象中的类别。这里是Android意图标准类别列表。

附加数据

传递给需要处理意图的组件的以键值对描述的附加信息

 putExtras() 方法设置,getExtras() 方法读取。这里是Android意图标准附加数据列表

标记

意图的可选部分,说明Android系统如何来启动活动,启动后如何处理等

标记和说明
1 FLAG_ACTIVITY_CLEAR_TASK :如果在意图中设置,并通过 Context.startActivity 传递,这个标记将导致与该活动相关联的所有已存在的任务在活动启动前被清空。活动将成为一个空任务的根,所有旧的活动被结束。该标记可以与 FLAG_ACTIVITY_NEW_TASK 结合使用。
2 FLAG_ACTIVITY_CLEAR_TOP :如果设置该标记,活动将在当前运行的任务中被启动。这不会启动一个新的活动实例,所有的在它之上的活动被关闭,这个意图作为一个新的意图被传递到已有的(目前在顶部的)活动。
3 FLAG_ACTIVITY_NEW_TASK :这个标记一般用于使得活动用于"启动器"风格的行为:为用户提供一个可以独立完成运行的数据,并启动完整儿独立的活动。

组件名称

    可选的域,代表活动、服务或者广播接收器类。如果设置,则意图对象被传递到实现设计好的类的实例,否则,Android 使用其他意图中的其他信息来定位一个合适的目标。组件名称通过 setComponent(),setClass()或者 setClassName() 来设置,通过 getComponent() 获取。

意图的类型

显式意图

用于连接应用程序的内部世界,假设你需要连接一个活动到另外一个活动,我们可以通过显示意图;

隐式意图

没有为目标命名,组件名称的域为空。隐式意图经常用于激活其他应用程序的组件

意图过滤器

使用过滤器来指定一系列活动、服务和广播接收器处理意图,需要借助于意图所指定的动作、类别、数据模式;在 manifest 文件中使用 <intent-filter> 元素在活动,服务和广播接收器中列出对应的动作,类别和数据类型。

学习ing http://www.runoob.com/android/android-intents-filters.html

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/81807617
今日推荐