欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发基础应用(四大组件及Intent)

程序员文章站 2022-04-20 08:02:32
一、Android开发的四大组件:1.Activity:(通常展现一个可视化的用户界面)(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)Android应用中每个Activity都必须要在AndroidMainfest.xml配置文件中声明。2.Service:(用于在后台完成用户指定的操作)(1)service分为两种:a. started(启动):应用程序组件(如activity)调用startServi....

一、Android开发的四大组件:

1.Activity:(通常展现一个可视化的用户界面)

(1)一个Activity通常就是一个单独的屏幕(窗口)。

(2)Activity之间通过Intent进行通信。

(3)Android应用中每个Activity都必须要在AndroidMainfest.xml配置文件中声明。

 

2.Service:(用于在后台完成用户指定的操作)

(1)service分为两种:

           a. started(启动):应用程序组件(如activity)调用startService()方法时处于started。

           b. bound(绑定):应用程序组件调用bindService()方法绑定服务时的状态。

(2)startService()与bindService()区别:

            a. 其他组件调用startService()方法启动,导致服务的onStartCommand()方法被调用。Started状态时,其生命周期与启动它的组件无关,可在后台无限期运行,即使启动服务的组件已经销毁。因此服务完成任务后要调用stopSelf()方法停止,或由                 其他组件调用stopService()方法停止。

            b. 使用bindService()启动服务,调用者与服务器绑定在了一起,调用者一旦退出,服务也就终止。

(3)开发人员需要在应用程序配置文件中声明全部service,用<service></service>。

(4)Service后台运行,一般不与用户交互,因此没有图形用户界面。Service组件需要继承Service基类。为其他用户提供后台服务或监控其他组件的运行状态。

 

3.content provider:(内容提供者)

  1. Android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或读入数据。
  2. 多个应用程序间共享数据才需要内容提供者(统一数据访问方式)。
  3. 实现数据共享。 ContentProvider用于保存和获取数据,使其对所有程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
  4. 开发者不会直接使用ContentProvider类的对象,通过ContentResolver对象操作。
  5. 使用URI唯一标识其数据集,这里的URI以content://作为前缀,表示数据由其管理。

 

4.broadcast receiver:(用于接收广播)

  1. 应用对外部事件过滤,对感兴趣的外部事件(电话呼入等)接收并响应。广播i接收器没有用户界面,但可以启动一个activity或service来响应收到的信息,或用NotificationManager来通知用户。通知可以有多种,如闪灯、震动、播放声音等。一般在状态栏放一个持久的图标,用户可以打开并获取信息。
  2. 广播接收者有两种注册方法,程序动态注册和AndroidManifest文件静态注册。
  3. 动态注册广播接收器特点是当用来注册的activity关掉后,广播也就失效了。静态注册无需担忧是否被关闭,只要设备是开启状态,广播接收器也是打开的。app未启动,app订阅的广播在触发时也会对它起作用。

 

Intent

        当接收到ContentResolver发出的请求后,内容提供者被激活。而其他三种组件──activity、服务和广播接收器被一种叫做intent的异步消息所激活。intent是一个保存着消息内容的Intent对 象。对于activity和服务来说,它指明了请求的操作名称以及作为操作对象的数据的URI和其他一些信息。比方说,它能够承载对一个activity 的请求,让它为用户显示一张图片,或者让用户编辑一些文本。而对于广播接收器而言,Intent对象指明了声明的行为。比方,它能够对全部感兴趣的对象声 明照相button被按下。

        1.通过传递一个Intent对象至 Context.startActivity()或Activity.startActivityForResult()以加载(或指定新工作给)一个activity。对应的activity能够通过调用 getIntent() 方法来查看激活它的intent。Android通过调用activity的onNewIntent()方法来            传递给它继发的intent。

         一个activity常常启动了下一个。假设它期望它所启动的那个activity返回一个结果,它会以调用startActivityForResult()来代替startActivity()。比方说,假设它启动了另外一个activity以使用户挑选一张照片,它或许想知道哪张照片被选中了。结果将            会被封装在一个Intent对象中,并传递给发出调用的activity的onActivityResult() 方法。

        2.通过传递一个Intent对象至Context.startService()将启动一个服务(或给予正在执行的服务以一个新的指令)。Android调用服务的onStart()方法并将Intent对象传递给它。

        与此类似,一个Intent能够被调用组件传递给 Context.bindService()以获取一个正在执行的目标服务的连接。这个服务会经由onBind() 方法的调用获取这个Intent对象(假设服务尚未启动,bindService()会先启动它)。比方说,一个activity能够连接          至前述的音乐回放服务,并提供给用户一个可操作的(用户界面)以对回放进行控制。这个activity能够调用 bindService() 来建立连接,然后调用服务中定义的对象来影响回放。

       3.应用程序能够凭借将Intent对象传递给 Context.sendBroadcast() ,Context.sendOrderedBroadcast(), 以及Context.sendStickyBroadcast()和其他类似方法来产生一个广播。Android会调用全部对此广播有兴趣的广播接收器的 onReceive()方法将         intent传递给它们。

本文地址:https://blog.csdn.net/qq_43824618/article/details/110242001

相关标签: 安卓 intent