android 基础—四大组件

这个问题似乎有些简单了,在面试的时候每次面试都会问到这个问题,四大组件是什么,五大框架是什么。。。

四大组件不就是activityservicecontent providerbroadcast receiver。但是在后期的每次运用中,程序的优化中,这四个组件是非常重要的。


1、activity(栈)

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

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

3)必须在AndroidManifest.xml配置文件中声明。


activity的相互跳转、返回值以及生命周期


Activity生命周期

从创建到销毁的生命周期:

onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy()

从起动到后台再到前台:

onCreate()→onStart()→onResume()→onPouse()→onStop()→onRestart()→onStart()→onResume()


跳转

①startActivity(intent)

②startActivityForResult(intent,requestCode)//有返回值
onActivityResult(int requestCode,intresultCode,Intent data)//接收返回值A页面
setResult(resultCode,data)//设置返回值B页面

bt1.setOnClickListener( new View.OnClickListener() {
        @Override
         public void onClick(View v) {
            Intent intent =  new Intent(this, class);
            startActivityForResult(intent,1);
        }
    });
  
  
@Override
 protected void onActivityResult( int requestCode,  int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode,  data);
     if(requestCode == 1 && resultCode == 2){
        String a =  data.getStringExtra( "AAA");
         tv.setText(a);
    }

 
 bt2.setOnClickListener( new View.OnClickListener() {
    @Override
     public void onClick(View v) {
        Intent intent =  new Intent();              //回传intent不需要参数了
        String s= (String) tv.getText();
        intent.putExtra( "AAA",s);                 //给意图intent添加key、value
        setResult(2, intent);                      //设置 返回标号 ,这里是2;回传的是intent
  
        finish();                                  //销毁当前页面
    }
});


2service


1service用于在后台完成用户指定的操作。service分为两种:

   (astarted(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。

   (bbound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

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

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

    (b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

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

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



3content provider


1android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据

2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。

3ContentProvider实现数据共享ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。

4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作

5ContentProvider使用URI来唯一标识其数据集,这里的URIcontent://作为前缀,表示该数据由ContentProvider来管理。



4broadcast receiver


1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activityserice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

2)广播接收者的注册有两种方法,分别是程序动态注册AndroidManifest文件中进行态注册

3动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值