Android四大组件详解

com.txy.anywhere.App.apk.1 立即下载

一、Android四大组件:Activity(活动)、Service(服务)、ContentProvider(内容提供者)、BroadCastReceiver(广播接收器)

    Activity(活动):一个显示用户界面并且提供用户交互的应用程序组件

    Service(服务):一个在后台执行的进行耗时操作的应用程序组件

    ContentProvider(内容提供者):一个用来暴露数据接口用于应用程序之间数据共享的应用程序组件

    BroadCastReceiver(广播接收器):一个用来进行组件之间消息异步传递的应用程序组件


二、Activity:

    1、生命周期:

       生命周期方法:onCreate() onStart() onRestart() onResume() onPause() onStop() onDestory()

       启动一个Activity:onCreate()--->onStart()--->onResume()

       销毁一个Activity:onPause()--->onStop()--->onDestory()

       当一个Activity(A)被另一个Activity(B)完全覆盖,则:A onPause()--->B onCreate()--->B onStart()--->B onResume()--->A onStop()。此时在栈(回退栈)中,B在A的上面。

       锁屏时:onPause()--->onStop()

       点击Home键退回后台时:onPause()--->onStop()

       从锁屏状态或者后台回到前台,onRestart()--->onStart()--->onResume()

    2、横竖屏切换:

         (1)由竖屏切换到横屏,生命周期变化为:onPause()--->onSaveInstanceState()--->onStop()--->

onDestroy()--->onCreate()--->onStart()--->onRestoreInstanceState()--->onResume()

           再由横屏切换到竖屏,则为:onPause()--->onSaveInstanceState()--->onStop()--->

onDestroy()--->onCreate()--->onStart()--->onRestoreInstanceState()--->onResume()

         (2)可以通过如下语句判断应用当前是处于竖屏状态还是横屏状态:

        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)

        {

            //横屏

        } else if (getResources().getConfiguration().orientation== Configuration.ORIENTATION_PORTRAIT)

        {

            //竖屏

         }

         (3)进行横竖屏切换时,Activity会被销毁再重新创建,会重新载入布局,可以设置竖屏状态下和横屏状态下的布局(layout-land)。当然也可以阻止Activity被销毁再重新创建,通过1、在AndroidManifest文件中的对应Activity中配置android:configChanges="keyboardHidden|orientation|screenSize",最好这三个都配置,否则不能适配所有机型或sdk版本;2、在java代码中重载onConfigurationChanged(Configuration newConfig)这个方法。

         (4)也可以阻止横竖屏切换,通过在清单文件中对应的Activity下设置android:screenOrientation="portrait"(比如这就是只显示竖屏),或者在代码中设置也可以setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)(设置成横屏)

     3、Activity的启动模式:

       四种:standard、singleTop、singleTask、singleInstance

   standard:也就是标准的启动模式。每次激活一个Activity都会新建一个Activity对象,不管任务栈中是否存在一个相同的Activity都会新建。

      singleTop:如果Activity位于栈顶,并且设置成singleTop,那么若再次启动该Activity,则不会新建Activity实例

    singleTask:如果Activity被设置成singleTask,那么当启动该Activity时,会先去栈中找有无该Activity实例,如果有,则将该Activity上面的Activity弹出栈,如果没有,则仍然新建该Activity实例。

    singleInstance:新建一个回退栈来存储该Activity实例

   

    Activity的启动模式怎么设置:在清单文件中对应的Activity下

android:launchMode="singleTask"(比如设置成singleTask模式)


三、Service

   1、有两种服务:启动式服务和绑定式服务。通过startService方法启动的服务叫启动式服务,通过bindService方法启动的服务叫绑定式服务。

   2、启动式服务和绑定式服务的区别:(1)启动式服务无法与Activity之间进行通信,与现有的Activity分离,即使Activity被杀掉之后,Service还可以正常运行。(2)启动式服务既可以通过Activity中调用stopService()来结束,也可以通过自己调用stopself()来结束;而绑定式服务则只能通过Activity中调用unbindService()方法来结束

   3、IntentService与Service的关系:IntentService是Service的子类,IntentService采用工作线程处理请求对象,当服务中不是同时处理多个请求时适合使用IntentService。Service既可以同时处理多个请求也可以处理一个请求(可开启多个工作线程)

   4、Service既不是一个进程也不是一个线程


四、ContentProvider

   1、通常与ContentResolver(内容观察者)结合使用,ContentProvider用于暴露数据端,ContentResolver用于访问数据端。ContentProvider用于进程间访问。

   2、ContentProvider对外暴露数据接口,数据是以表格的形式暴露。ContentProvider暴露数据接口,数据可以

是文本数据、图片数据、数据库数据

     3、ContentProvider的使用:(1)在清单文件中注册(四大组件的使用都要在清单文件中注册)。

<application>

     <provider
            android:name="com.xxx.server.MyContentProvider"
            android:authorities="com.xxx.server"
            android:exported="true">

     </provider>
</applicaiton>

       (2)创建子类继承ContentProvider。重写onCreate()方法以及对共享数据操作的方法

query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder)

insert(Uri uri, ContentValues values)
update(Uri uri, ContentValues values, String selection,String[] selectionArgs)
delete(Uri uri, String selection, String[] selectionArgs)

       (3)客户端和服务端匹配成功的uri匹配成功码

private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    //客户端与服务端uri匹配成功码
    private static final int QUERY = 1;
    private static final int INERT = 2;
    private static final int UPDATE = 3;
    private static final int DELETE = 4;
    private static final int STATUS = 5;

    static {
        sURIMatcher.addURI("com.txy.anywhere", "query", QUERY);
        sURIMatcher.addURI("com.txy.anywhere", "insert", INERT);
        sURIMatcher.addURI("com.txy.anywhere", "update", UPDATE);
        sURIMatcher.addURI("com.txy.anywhere", "delete", DELETE);
        sURIMatcher.addURI("com.txy.anywhere", "status", STATUS);
        sURIMatcher.addURI("com.txy.anywhere", "insert", STATUS);
        sURIMatcher.addURI("com.txy.anywhere", "update", STATUS);
        sURIMatcher.addURI("com.txy.anywhere", "delete", STATUS);
    }


五、BroadCastReceiver

    BroadcastReceiver主要采用异步传播机制进行消息的发送和传递(组件之间消息传递),所谓的异步表示广播的发送方发送广播时只需要将广播进行标记发出,不需要等待接收方给出响应,可以继续进行下面的操作;默认情况下所有的组件(广播接收器)都有接收广播的能力,哪个组件想要接收该广播就可以注册与发送方一致的标记就可以接收处理广播。

    广播接收器相对于其他三个组件,是使用频率比较低的。关于广播接收器我们要掌握它的两种注册方式。

    静态注册:在AndroidManifest.xml文件中注册,<receiver>标签注册,然后是<intent-filter>,里面是<action />,action中注册与发送方一致的标记。静态注册的好处是,当程序关闭或者没有打开的时候,同样可以接收相关的广播。

    动态注册:在代码中注册,创建一个IntentFilter对象,设置想要接收的广播,在onCreate()方法中通过调用registerReceiver()方法来注册广播接收器,在onDestroy()方法中通过调用unregisterReceiver()方法来注销广播接收器。

Cocos Creator 3D音频定位实战:从原理到沉浸感实现 3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案, 阅读详情

相关推荐

QGroundControl实现多机控制

前言 作为西安电子科技大学的本科生一名,目前在研究关于无人机导航规划与轨迹控制方面。 目前在跟导师做关于雷达无人机的一个项目,在这里记录一下关于QGC地面站实现多机控制的一些方法。 某些地方写的可能不是很完善,欢迎大家补充。 目前该文章还未写完,后期本人会继续编写 多机控制原理 多机地面站支持TCP,UDP和串口等三种连接方式,首先我们需要对这两种连接方式抽象出一个基类LinkInterface,提供两个虚函数分别对应于数据接受和发送处理,针对于不同的连接方式实现TCP,UDP和串口连接相对应的子类TCPL

Phillweston的博客 8430

Android四大组件详解(大白话版)

 1. Activity:负责展示用户界面,就像App的一个个“页面”,用户通过它与应用交互。   2. Service:在后台默默干活的打工人,比如播放音乐或下载文件,没有界面但能长时间运行。   3. BroadcastReceiver:像“收音机”一样接收系统或应用发出的广播消息,比如电量低或网络变化,然后做出响应。   4. ContentProvider:是“数据管家”,管理应用的数据并提供统一接口,让其他应用也能访问这些数据。  

m0_73804764的博客 1万+

Transformer模型详解(图解最完整版)

Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。

2501_91695094的博客 2703

[Android]四大组件简介

在 Android 开发中,“四大组件”(Four Major Components)是指构成 Android 应用程序的四种核心组件,它们通过各自的方式与系统交互,实现应用的多样功能。这些组件是:Activity、Service、Broadcast Receiver 和 Content Provider。每个组件都扮演着不同的角色,并且通过各自的生命周期、方法和目的与 Android 操作系统交互。

Gamin 5927

VS2019中C++动态链接库(DLL)的创建与调用

VS2019中C++动态链接库(DLL)的创建与调用,及一些进阶技巧。

qq_42232522的博客 7563

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 220

【Android学习】四大组件

Android四大组件——Activity、Service、Content Provider和Broadcast Receiver,共同构成了应用程序的基本框架。Activity负责用户交互界面,Service用于后台任务处理。Content Provider实现数据共享,允许不同应用间访问数据。Broadcast Receiver监听系统或应用内部广播,执行相应操作。

m0_75208773的博客 3073

Meta DINOv3实战指南:如何用7B参数ViT模型提升你的视觉任务性能(附Hugging Face部署教程)

本文提供了Meta DINOv3 7B参数ViT模型的实战部署指南。文章详细解析了该自监督视觉模型的优势,并重点演示了如何在Hugging Face平台上高效加载这一大规模模型,同时给出了图像分类、语义分割等下游任务的性能提升技巧与代码示例,帮助开发者在实际视觉任务中应用这一前沿技术。

pz89012345的博客 325

Android-安卓四大组件详解及代码示例

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 Activity: 通常用于显示一个单独的界面,例如从app A点击某个按钮,跳到app B的某个界面,在此界面可以设置某些功能,设置完成之后这个界面就没有其他用途。这种场景就适合用activity。 具体实现就是app A在按钮响应事件中发送intent,app B中对此intent做响应,启动activity。 app B中Activi

cheriyou_的博客 2332

华为OD机试 双机位A卷 - 流量波峰 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位A卷 流量波峰,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1377

ceph recovery 相关参数

可以修改的最大回填/恢复选项列在 “恢复/回填选项” 部分。mClock 的修改 默认回填/恢复限制由 osd_mclock_override_recovery_settings 选项,设置为 默认为 false。尝试修改任何默认恢复/回填限制而不设置门控选项,会将该选项重置为 mClock 默认值,并在集群日志中记录一条警告消息。请注意,默认值可能需要几秒钟才能恢复生效。请使用 config show 命令验证限制,如下所示。就直接设置以下参数,过一会就变回了默认值。简单点说官网的意思就是不设置。

weixin_40548182的博客 279

【Android】安卓四大组件之服务(Service)详解:从基础到进阶

Service作为安卓应用后台任务处理的核心组件,在保障应用功能完整性和提升用户体验方面起着不可或缺的作用。通过掌握Service的生命周期、分类及使用场景,开发者能够合理设计应用架构,实现高效、稳定的后台任务处理。随着安卓系统的不断升级,Service的使用也需与时俱进,结合新特性和替代方案,让应用在后台运行中发挥更大价值。希望本文能帮助大家深入理解Service,在安卓开发中灵活运用这一强大工具

m0_59734531的博客 1522

外设测试 - ATAES132A 加解密芯片测试

原理 使用芯片官方提供的读写操作库,进行先写后读并校验,确认数据一致。 示例代码 int main(void) { uint8_t ret; aes132p_enable_interface(); ret = write_memory_test(); if (ret != AES132_FUNCTION_RETCODE_SUCCESS) { aes132p_disable_interface(); printf

一个软件工程师的技术笔记 859

安卓四大组件详解

一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。   一个Activity的启动顺序: onCreate()——>onStart()——>onResume() 当另一个Activity启动时: 第一个Activity onPause()——>第二个Activity    onCreate()——>onStart()

qq_30691619的博客 525

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Android】安卓四大组件之活动(Activity) 详解:从基础到进阶

在安卓应用开发的世界里,Activity 作为安卓四大组件之一,是用户与应用进行交互的重要窗口,它承载着应用的界面展示与用户操作响应功能。无论是打开一款 APP 看到的主界面,还是点击按钮后弹出的新页面,都是 Activity 在发挥作用。本文将深入剖析 Activity,带你全面了解它的原理、使用方法及进阶技巧

m0_59734531的博客 3873

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android中的四大组件详解

Android中的四大组件详解 我们都知道Android系统应用层框架中,为开发者提供了四大组件来便于应用的开发,它们是Activity、Service、BroadcastReceiver、ContentProvider。 它们用于在应用开发过程中,不同场景的功能实现。 Activity:Activity是开发中最常用的,也是最复杂的一个组件。它是用户可以专注做一些事情的东西。它的主要功能就是可以和用户进行交互操作,所以几乎所有的Activity都会负责创建一个显示窗口,然后通过setContentView

joye123的博客 7562

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android 四大组件详解

Android四大组件分别为:activity、service、content provider、broadcast receiver。 一、android四大组件详解 1、activity (1)一个Activity通常就是一个单独的屏幕(窗口)。 (2)Activity之间通过Intent进行通信。 (3)android应用中每一个Activity都必

CS2559371050的博客 1618

android四大组件详解

Android四大组件分别为activity、service、contentprovider、broadcast receiver。 一、android四大组件详解 1、activity (1)一个Activity通常就是一个单独的屏幕(窗口)。 (2)Activity之间通过Intent进行通信。 (3)android应用中每一个Act...

qq_40062504的博客 502

Android四大组件——BroadcastReceiver详解

一、 定义 BroadcastReceiver(广播接收器),属于Android四大组件之一 在Android开发中,BroadcastReceiver的应用场景非常多广播,是一个全局的监听器,属于Android四大组件之一 Android 广播分为两个角色:广播发送者、广播接收者 二、 作用 用于监听 / 接收 应用发出的广播消息,并做出响应 应用场景 a. 不同组件之间通信(包括应用内 / 不同应用之间) b. 与 Android 系统在特定情况下的通信 如当电话呼入时、网络可用时

QLHepburn的博客 1679
上一篇: 关于Android中的SharedPreferences的介绍
下一篇: socket总结
zdj_develop
博客等级 码龄11年 56粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值