精华内容
下载资源
问答
  • 2019-09-11 14:50:54

    这篇博客没有代码,也没有图片去解释其中的原理,只是单纯的讲讲自己对于四大组件在系统中作用的理解。想起自己在学习的时候,对于四大组件尤其是内容提供者在软件中所扮演的角色一直都处于云里雾里的状态,查到的资料也大多都是从代码、使用方法、原理等方面剖析,自己目前还没有这方面的能力,只能简单的阐述他们的作用,希望可以帮助新入门的安卓开发者建立一个大概的轮廓。
    安卓中的四大组件指的是活动、广播接收器、内容提供者和服务。安卓开发人员接触最多的是活动,这是与我们的开发关系最紧密的组件,不管开发什么APP都必须的用到。排在第二常用的组件应该是广播接收器,有时候我们会希望在一个页面中接收系统的某些变化或者在同一个项目中的页面A中接收来自页面B的通知,这时候我们就可以使用广播,接收消息的可以是多个,也可以是一个。只不过现在除了监听系统变化会使用广播外,项目内的一般都使用EventBus来代替。如果不是做手机安全卫士这类软件的话,对于剩下的服务和内容提供者这两大组件使用频度个人认为使用频度是差不多的,服务如果要说要说常用的话可能就是消息通知栏或者在下载大文件的时候可能会用到,而内容提供者在除非是在需要和其他软件发生关系、有数据往来时才会用到,虽然内容提供者不常用到,但是和他关系紧密的内容解析者却是我们经常会使用到的,其他的不说,获取app内下载的文件就会用到,否则就会找不到路径和文件。
    对于大多数的安卓开发者来说,开发的产品商城类的居多,需要在APP内使用sqlite数据库的APP常见但也不是很多,所以内容提供者看起来离我们很远,但是我们需要知道的是内容提供者的出现是安卓系统为了软件系统的安全性而设置的,跨应用的数据交互都会用到内容提供者。
    简单的说,活动用于布局,服务用于维持某些重要的进程不被杀死,广播接受者可以跨活动接收信息同时监听系统的重要变化,而内容提供者则是为了在安全的前提下更好的和其他软件进行通信,不在四大组件之列的内容解析者可以将内容提供者的信息进行解析,以便自己使用。而可以将四大组件串联起来发生联系的就是Intent这个使者了。

    更多相关内容
  • Android四大基本组件介绍与生命周期Android四大...  一:了解四大基本组件  Activity:  应用程序中,一Activity通常就是一单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。  Activity
  • Android四大组件

    2022-04-20 22:36:30
    Android 四大组件分别为:Activity、Service、BroadCast Receiver、Content ProviderActivity Activity是用户操作的可视化界面,它为用户提供了一完成操作指令的窗口。需要在Activity创建时调用setContentView()...

    Android 四大组件分别为:

    Activity、Service、BroadCast Receiver、Content Provider

    Activity

              Activity是用户操作的可视化界面,它为用户提供了一个完成操作指令的窗口。 需要在Activity创建时调用setContentView()来完成界面的显示,为用户提供交互的入口。

    1、通常一个Activity就是一个屏幕

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

    3、安卓中每一个Activity都需要在AndroidMainFest.xml文件中声明

    Service

            Service(服务)是一个可以在后台执行长时间运行操作而没有用户界面的应用组件,即使当前应用被切换到后台,又或者用户打开了另一个App,服务仍然可以保持正常运行。

    1、启动服务的Activity被销毁也不会影响服务的运行,只有当进程被关闭时,Service也会被关闭

    2、服务并不会自己开启线程,所有的代码都是默认运行在主线程中,也就是说我们需要在服务的内部手动开启子线程,并在此执行耗时任务,否则就有可能出现主线程被阻塞的情况。

    Service的两种形式

            1、started(启动状态)

                    当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响,除非手动调用才能停止服务, 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。

            2、bound(绑定状态)

                    当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。

    Service在AndroidMainFest.xml中的声明

    <service android:enabled=["true" | "false"]
        android:exported=["true" | "false"]
        android:icon="drawable resource"
        android:isolatedProcess=["true" | "false"]
        android:label="string resource"
        android:name="string"
        android:permission="string"
        android:process="string" >
        . . .
    </service>
    • android:exported:代表是否能被其他应用隐式调用,其默认值是由service中有无intent-filter决定的,如果有intent-filter,默认值为true,否则为false。为false的情况下,即使有intent-filter匹配,也无法打开,即无法被其他应用隐式调用。
    • android:name:对应Service类名
    • android:permission:是权限声明
    • android:process:是否需要在单独的进程中运行,当设置为android:process=”:remote”时,代表Service在单独的进程中运行。注意“:”很重要,它的意思是指要在当前进程名称前面附加上当前的包名,所以“remote”和”:remote”不是同一个意思,前者的进程名称为:remote,而后者的进程名称为:App-packageName:remote。
    • android:isolatedProcess :设置 true 意味着,服务会在一个特殊的进程下运行,这个进程与系统其他进程分开且没有自己的权限。与其通信的唯一途径是通过服务的API(bind and start)。
    • android:enabled:是否可以被系统实例化,默认为 true,因为父标签也有enable属性,所以必须两个都为默认值 true 的情况下服务才会被激活,否则不会激活。

    参考来源:关于Android Service真正的完全详解,你需要知道的一切_zejian_的博客-CSDN博客_android service      

    展开全文
  • Android 四大组件

    千次阅读 2022-05-06 18:55:23
    服务也是Android的四大组件之一。被称为是没有界面的activity;它拥有自己的生命周期,可以不随着activity的销毁而销毁。 2)创建方式 需要创建继承自Service类的自定义类,并在配置文件中使用标签完成注册,该类回复...

    14.3.13Activity
    1)生命周期图
    在这里插入图片描述

    2)生命周期
    onCreate:创建活动。此时会把页面布局加载进内存,进入了初始状态。
    onStart:开启活动。此时会把活动页面显示在屏幕上,进入了就绪状态。
    onResume:恢复活动。此时活动页面进入活跃状态,能够与用户正常交互,例如允许响应用户的点击动作、允许用户输入文字等。
    onPause:暂停活动。此时活动页面进入暂停状态(也就是退回就绪状态),无法与用户正常交
    互。
    onStop:停止活动。此时活动页面将不在屏幕上显示。
    onDestroy:销毁活动。此时回收活动占用的系统资源,把页面从内存中清除掉。
    onRestart:重启活动。处于停止状态的活动,若想重新开启的话,无须经历onCreate的重复创建
    过程,而是走onRestart的重启过程。
    3)Activity的启动模式
    默认启动模式 standard
    栈顶复用模式 singleTop
    栈内复用模式 singleTask
    全局唯一模式 singleInstance
    在这里插入图片描述

    4)生命周期举例
    onCreate,onStart,onResume,onPause,onStop,onReStart,onDestroy
    A页面刚创建时,onCreateA onStartA onResumeA
    A返回,onPauseA onStopA onDestroyA
    A返回后重新进入,A onCreateA onStartA onResumeA
    A使用Home键或者任务键, onPauseA onStopA
    A使用Home键之后进入,A onReStartA onStartA onResumeA
    A使用Home键之后进入A,onReStartA onStartA onResumeA
    A页面跳转到B页面, onPauseA onCreateB onStartB onResumeB onStopA
    B页面返回到A页面,onPauseB onReStartA onStartA onResumeA onStopB onDestroyB
    在B界面使用任务键上滑清除App onPauseB onStopB onDestroyB onDestroyA

    广播

    1. BroadcastReceiver.onReceive默认是在主线程(UI线程)执行的,所以不能在广播接收器做耗时操作。

    2. 广播发送者可以指定接收广播的应用,只要将sendBroadcast(intent)的intent加上具体的包名就行了,intent.setPackage(“yourpackagename”)。

    3. 广播发送者和接收者都可以声明权限,这样只有在AndroidManifest声明对应权限,才能接收到相应的广播消息。

    简介

    广播接收者(BroadcastReceiver)是安卓的四大组件之一。
    类似于日常生活中的广播,安卓系统中的广播也有发送者和接收者;
    发送者通常是系统的应用程序,比如电池电量低,开关机,有电话或者短信到来,网络是否连接等都会向外发出广播。
    接收者通常是用户创建的应用程序,注册对应的广播后,用来监听系统发出的广播,监听到后可针对广播事件做相应反馈。
    广播发送者也可以是用户创建的应用程序,成为自定义广播。

    接收广播

    发送广播

    1 发送有序广播
    使用sendBroadcast()方法发送无序广播。无序广播发送时会在携带的intent对象中设置action属性值,所有注册广播时设置了相同action值的广播接收者都能够接收到该广播,没有绝对顺序。
    2 发送无序广播
    使用sendOrderedBroadcast()方法可以发送有序广播。广播发送者和接收者也会先匹配action属性值,再通过广播接收者设置的priority属性值决定广播的接收顺序,priority值越大越先接收到广播,如果值相同,先注册的先接收到广播。
    3 指定广播接收者(一种特殊的有序广播)

    4)Android四大组件将创建的类在配置文件中进行注册。

    广播步骤

    创建一个Receiver类。通过系统自定义的创建。
    重写onReceive()方法。
    在AndroidManifest中添加过滤器。
    添加此广播对应的权限。

    当前是否为静态广播接收不到,但是动态广播可以接收到。

    对于静态注册的方法,在Android8.0之后就增加了限制。
    从 Android 8.0(API 级别 26)开始,系统对清单声明的接收器施加了额外的限制。
    如果您的应用面向 Android 8.0 或更高版本,则您不能使用清单为大多数隐式广播(不专门针对您的应用的广播)声明接收器。当用户积极使用您的应用程序时,您仍然可以使用上下文注册的接收器。
    如果仍然想要使用静态注册的方式,在发送广播时需要做声明:componentName中分别为包和包中类的引用。
    intent.setComponent(new ComponentName(“com.example.myreceiver”,“com.example.myreceiver.receiver”));

    比如MainActivity中添加:

    无序广播

    
    ## 无序广播
    
      @Override
      public void onClick(View v) {
          Intent intent = new Intent();
          // action为字符串形式的
          intent.setAction(MyBroadCastReceiver.myReceiver);
          sendBroadcast(intent);
      }
    
      @Override
      protected void onStart() {
          super.onStart();
          myBroadCastReceiver = new MyBroadCastReceiver();
          // 创建一个意图过滤器 只处理myReceiverBroadcastReceiver的广播
          IntentFilter intentFilter = new IntentFilter(MyBroadCastReceiver.myReceiver);
          // 注册接收器,注册之后才能正常接收广播
          registerReceiver(myBroadCastReceiver, intentFilter);
      }
    
      @Override
      protected void onStop() {
          super.onStop();
          // 注销接收器,注销之后不再接收广播
          unregisterReceiver(myBroadCastReceiver);
      }
    
    public class MyBroadCastReceiver extends BroadcastReceiver {
    
        private static String TAG = "MyBroadCastReceiver";
        public static String myReceiver = "myReceiverBroadcastReceiver";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null && intent.getAction().equals(myReceiver)){
                Log.i(TAG, "onReceive: my receive");
            }
        }
    }
    

    有序广播

    优先级最大可以声明为int型的最大值,也就是2147483647(为了最高优先级,拼了)。默认优先级应该为0;

    // 源码
    
    	private int mPriority;
    
        public IntentFilter(String action) {
            mPriority = 0;
            mActions = new ArrayList<String>();
            addAction(action);
        }
    
        public final void setPriority(int priority) {
            mPriority = priority;
        }
    

    发送广播

    // 发送广播
    Intent intent2 = new Intent();
    // action
    intent2.setAction(orderBroadCastReceiver);
    sendOrderedBroadcast(intent2,null);
    

    IntentFilter中输入参数为action
    在这里插入图片描述
    // 注册

    // todo 优先级 默认的优先级是多少
    OrderAReceiver orderAReceiver = new OrderAReceiver();
    IntentFilter intentFilterA = new IntentFilter(orderBroadCastReceiver);
    intentFilterA.setPriority(10);
    registerReceiver(orderAReceiver,intentFilterA);
    
    // todo 优先级 默认的优先级是多少
    OrderBReceiver orderBReceiver = new OrderBReceiver();
    IntentFilter intentFilterB = new IntentFilter(orderBroadCastReceiver);
    intentFilterB.setPriority(8);
    registerReceiver(orderAReceiver,intentFilterB);
    
    
    // 取消注册
    unregisterReceiver(orderAReceiver);
    unregisterReceiver(orderBReceiver);
    

    // 接收
    registerReceiver 输入参数分别为BroadcastReceiver receiver, IntentFilter filter
    在这里插入图片描述

    public class OrderAReceiver extends BroadcastReceiver {
        private String TAG = "HHH.OrderAReceiver";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null && intent.getAction().equals(MainActivity.orderBroadCastReceiver)){
                Log.i(TAG, "OrderAReceiver onReceive...");
            }
        }
    }```
    
    public class OrderBReceiver extends BroadcastReceiver {
        private String TAG = "HHH.OrderBReceiver";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null && intent.getAction().equals(MainActivity.orderBroadCastReceiver)){
                Log.i(TAG, "OrderBReceiver onReceive...");
            }
    
        }
    }
    // 结果
    
    ```java
    2022-06-17 17:02:05.777 21164-21164/cn.jj.myapplication I/HHH.OrderAReceiver: OrderAReceiver onReceive...
    2022-06-17 17:02:05.779 21164-21164/cn.jj.myapplication I/HHH.OrderBReceiver: OrderBReceiver onReceive...
    

    静态广播

    发送

    // public static String shakeBroadcast = "MyShakeBroadcast";
    intent3.setAction(shakeBroadcast);
    ComponentName componentName = new ComponentName(this,"cn.jj.myapplication.receiver.BroadStaticReceiver");
    intent3.setComponent(componentName);
    sendBroadcast(intent3);
    

    接收

    public class BroadStaticReceiver extends BroadcastReceiver {
        private String TAG = "HHH.BroadStaticReceiver";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null && intent.getAction().equals(MainActivity.shakeBroadcast)){
                Log.i(TAG, "onReceive: BroadStaticReceiver");
                Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
                vibrator.vibrate(500);
            }
        }
    }
    

    清单文件

            <receiver
                android:name=".receiver.BroadStaticReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="MyShakeBroadcast"/>
                </intent-filter>
            </receiver>
    

    服务:
    1)简介
    服务也是Android的四大组件之一。被称为是没有界面的activity;它拥有自己的生命周期,可以不随着activity的销毁而销毁。
    2)创建方式
    需要创建继承自Service类的自定义类,并在配置文件中使用标签完成注册,该类回复写一个同名构造方法和一个onBind()的回调方法。
    3)使用方法
    a) 开启和停止服务
    使用startService()方法开启服务,使用stopService()方法停止服务。
    适用于例如开启和关闭游戏背景音乐的场景。
    b) 绑定和解绑服务
    使用bindService()方法绑定服务,使用unbindService()方法解绑服务。
    适用于服务中私有方法,Activity通过绑定服务后,调用服务中的方法。例如:音乐播放器。
    4)服务与Activity中间的通信
    a) 服务的本地调用方法
    调用服务的Activity与服务在同一个应用程序中,绑定服务后调用服务中的方法。
    b) 服务的远程方法调用
    调用服务的Activity与服务在同一个应用程序中,绑定服务后调用服务中的方法。

    context:
    它描述的是一个应用程序的环境,即上下文
    它类是一个抽象的类,android提供了一个具体的通用实现类contextIml类。
    它就像是一个大管家,是一个访问全局信息的接口。通过它我们可以获取应用程度 的资源的类,包括一些应用级的操作,如启动一个activity,发送广播,接受Intent信息。

    Context的继承关系图如下图所示:
    在这里插入图片描述

    展开全文
  • 安卓四大组件及其作用

    千次阅读 2021-05-26 08:38:50
    安卓四大组件:Activity、Service、BroadcastReceiver和ContentProvider,作用:1、Activity组件的主要作用是展示一界面并和用户交互,它扮演的是一种前台界面的角色Activity是一种展示型组件,主要是向用户展示一...

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。

    安卓四大组件:Activity、Service、BroadcastReceiver和ContentProvider,作用:

    1、Activity组件的主要作用是展示一个界面并和用户交互,它扮演的是一种前台界面的角色

    Activity是一种展示型组件,主要是向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互。对用户来说,Activity就是Android应用的全部,因为其他三大组件对用户来说是不可感知的。Activity的启动由Intent触发,其中Intent分为显式启动和隐式启动。

    2、Service组件的主要作用是在后台执行计算任务,执行任务的结果可以和外界进行通信

    Service是一种计算型组件,用于在后台执行一系列计算任务。由于Service组件工作在后台,因此用户无法直接感知到它的存在。Service组件和Activity组件不同,Activity组件只有一种运行模式,即Activity处于启动状态,但是Service组件却有两种状态:启动状态和绑定状态。Service组件处于启动状态时,它的内部可以执行一些后台计算,并且不需要和外界有直接的交互。Service处于绑定状态,Service内部同样也可以执行后台计算,但是处于这种状态的Service可以很方便地和外界进行通信。

    3、BroadcastReceiver组件的主要作用是消息的传递,该消息的传递可以在应用内,也可以在应用之间,它的角色是一个消息的传递者

    BroadcastReceiver是一种消息型组件,用于在不同组件乃至不同应用之间传递消息。BroadcastReceiver同样无法被用户所感知,因为它工作在系统内部。BroadcastReceiver也叫做广播,广播的注册方式有两种:静态注册和动态注册。静态注册指在AndroidManifest中注册广播,这种广播在应用安装时被系统解析,此种形式的广播不需要应用启动就可以接收到相应的广播。动态广播需要通过Context.registerReceiver()来实现,并且在不需要的时候通过Context.unRegisterReceiver()解除广播,此种形态的广播必须要应用启动才能注册并接收广播。

    4、ContentProvider组件的主要作用是作为一个平台,提供数据的共享,并且提供数据的增删改查功能。主要应用于应用之间的数据共享场景

    ContentProvider是一种数据共享型组件,用于向其他组件乃至其他应用共享数据。同样的,它也无法被用户所感知。对于ContentProvider组件来说,它的内部需要实现增删改查这四种操作。需要注意的是,ContentProvider内部的delete、update和query方法需要处理好线程同步,因为这几个方法都是在Binder线程池中被调用的。ContentProvider组件不需要手动停止。

    展开全文
  • Intent是信使,负责完成Android四大组件之间的信息传递,同类、不同类的组件无法直接传递对象,一旦需要沟通只能通过Intent(不建议通过静态变量或静态方法传递数据,容易造成数据异常、内存泄露等问题)。...
  • Android四大组件是什么

    千次阅读 2021-05-26 07:49:03
    四个组件分别起到不同的作用,相互配合才能确保安卓系统的正常运行,因此是缺一不可的。Android四大组件及其作用1、活动(activity)Activity可以看成是安卓系统的根本,在这个根本上才可以进行其他的工作,因...
  • 本文将介绍一下这四个组件是怎样的。我们知道Android操作系统,实际上是一个复杂的操作平台,并且也是包含了多种功能的一些模块,比如用户界面系统、系统间通信系统、数据库系统和定位服务等,并...
  • Android四大组件详解

    千次阅读 2021-10-18 18:36:14
    文章目录Android四大组件详解四大组件的不同点一、Activity二、Service三、Broadcast Receiver、Content Provider四大组件相同点4大组件的注册4大组件的激活4大组件的关闭android中的任务(activity栈) Android...
  • Android四大核心组件 Activity Activity是Android应用程序核心组件中最基本的一种,是用户与应用程序交互的窗口。类似于一网站中的网页,可以互相跳转,并且可以有返回值(相当于转发是添加参数或者返回值)。 当...
  • 本文实例讲述了Android编程中的四大基本组件与生命周期。分享给大家供大家参考,具体如下: Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 一:了解...
  • Android四大核心组件——汇总

    千次阅读 2019-06-03 10:56:21
    onCreate:Activity创建时第一调用的方法,通常我们在该方法中加载布局文件,初始化UI组件,事件注册等等 onStart:在onCreate方法之后调用,用于显示界面,但用户还不能进行交互 onRestart:当一stoped状态的...
  • Android 四大组件之Activity

    千次阅读 2022-02-14 13:49:40
    Android 四大组件之Activity ​ Android有四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者...
  • 安卓四大组件和进程之间关系

    千次阅读 2017-11-02 08:31:29
    四大组件,线程
  • 安卓的四大组件

    千次阅读 2021-03-05 09:38:27
    Android 开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多应用...
  • Android-安卓四大组件详解及代码示例

    千次阅读 2020-05-22 19:50:29
    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 Activity: 通常用于显示一单独的界面,例如从app A点击某个按钮,跳到app B的某个界面,在此界面...
  • 安卓四个组件之一 boradcastreceiver的简单使用
  • Android中,Intent(貌似通常译作:意图...),就是连接各组件的桥梁。前段时间看同事们做Symbian平台的网易掌上邮(真的是做的用心,NB的一米,热情欢迎所有163邮箱的S60v3用户,猛点击之...),有功能是为邮件...
  • 安卓 四大组件

    万次阅读 多人点赞 2018-06-29 11:16:46
    Android开发的四大组件 Android四大组件分别为activity、service、content provider、broadcast receive 一、Activity Activity生命周期的方法是成对出现的 onCreate() &amp; onDestory() onStart() ...
  • Android开发的四大组件

    2012-10-18 09:07:39
    文档主要是讲Android开发的四大组件详解,包含 Activity详解 ,Service详解,Broadcast Receiver详解,Content Provider详解 外加一重要组件 intent的详解。 文章内容来自网络,本文是一总结性文章。
  • Activity之间通信及其生命周期变化,及回传参数等基础知识点
  • 安卓面试题
  • Android的四大组件及Activity 的生命周期 及五种布局 一、 四大组件 Activity: 是Android与用户交互的窗口, Service: 后台服务于Activity , 封装有一完整的逻辑功能, Content Provider : 是Android 提供的第三...
  • Android四大组件(整理相关知识点)

    万次阅读 多人点赞 2018-05-21 23:13:36
    Android 开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多应用...
  • Android 四大组件有哪些 功能是什么

    千次阅读 2020-11-19 09:06:13
    Android的四大组件分别是: 1.activity 显示界面 2.service 服务 3.Broadcast Receiver 广播 4.Content Provider 数据通信 1. activity 显示页面: a.首先activity就是一单独的窗口; 一activity相当于我们...
  • 相关题目与解析下面选项中,哪一项是Android的四大组件之一A、ListViewB、ActivityC、ExtrasD、Bundle下面哪个不是安卓四大组件之一()A.contentproviderB.intentC.activityD.serviceActivity是Android应用程序的四大...
  • 安卓基础框架与四大组件分析

    千次阅读 2021-12-27 18:30:15
    安卓分为四个层,从高层到底层分别是应用程序层(Applications),应用程序框架层(Application Framework),系统运行库层(Libraries)和运行环境层(Android Runtime)、linux核心层(Linux Kernel)。 应用程序层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,472
精华内容 48,188
关键字:

安卓四个组件的关系