Android四大组件之~~Service

Android四大组件详解 阅读详情

声明:转载请注明出处:http://blog.youkuaiyun.com/hello_chillax

开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver。今天来介绍其一:Service。

一.Service和Thread有什么区别和联系,以及使用Service的必要性。

Service和Thread没有没有什么直接的关系
Service是Android四大组件之一,二Thread就是一个线程,而且不具有可比性。
Service可以是一个单独的进程,也可以是运行在主线程中。

我们知道,所有的线程当程序挂掉之后都会被终止,但是有些时候我们需要一个后台持续进行的动作,就必须用服务。

服务: 长期后台运行的没有界面的组件

什么地方需要用到服务?

天气预报:后台的连接服务器的逻辑,每隔一段时间 获取最新的天气信息
股票显示:后台的连接服务器的逻辑,每隔一段时间 获取最新的股票信息
mp3播放器: 后台长期的播放音乐。

android系统进程管理是按照一定的规则的:
1.应用程序一旦被打开 通常情况下关闭(清空任务栈)后进程不会停止。方面下一次快速启动。
带来内存不足的问题。
2.Android系统有一套 内存清理机制。 按照优先级去回收系统的内存。

进程分为5个等级的优先级:(从高到低)

1.Foreground process 前台进程 用户正在玩的应用程序对应的进程

2.Visible process 可视进程 用户仍然可以看到这个进程的界面。

3.Service process服务进程 应用程序有一个服务组件在后台运行。

4.Background process 后台进程 应用程序没有服务在运行 并且最小化 (activity onstop)

5.Empty process 空进程 没有任何运行的activity, 任务栈空了

长期后台运行的组件, 不要在activity开启子线程。
应该是创建服务,在服务里面开启子线程。

服务的目的:
1.长期后台运行。
2.提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,把进程重新创建。

二.Service的两种使用方式。

使用Service,可以有两种方式,我们通过两个例子来看一下。

  1. 通过绑定Activity的方式开启。

1.1 首先创建一个MyService.java

public class MyService extends Service {

    @Override
    //当Activity和Service绑定时调用
    public IBinder onBind(Intent intent) {
        System.out.println("Service is binded...");
        return new Binder();
    }
    @Override
    //当服务被创建时调用
    public void onCreate() {
        System.out.println("Service is created...");
        super.onCreate();
    }
    @Override
    //等同于onStart()
    public int onStartCommand(Intent intent, int flags, int startId) {
        System.out.println("Service is started...");
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    //当解绑时调用
    public boolean onUnbind(Intent intent) {
        System.out.println("onunbind");
        return super.onUnbind(intent);
    }
    @Override
    //当销毁时调用,比如说解绑后
    public void onDestroy() {
        System.out.println("ondestroy");
        // TODO Auto-generated method stub
        super.onDestroy();
    }
}

1.2 然后在manifest中声明它:

<service android:name="com.example.demo.MyService"></service>

1.3 在Activity中进行绑定和解绑操作。

public class MainActivity extends Activity {

    private MyConn mConn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void bind(View view){
        //通过执行这个函数进行绑定
        mConn=new MyConn();
        bindService(new Intent(this,MyService.class), mConn, BIND_AUTO_CREATE);
    }
    public void unbind(View view){
        //通过执行这个函数进行解绑
        unbindService(mConn);
        mConn=null;
    }
    public class MyConn implements ServiceConnection{

        @Override
        //当绑定成功,并且IBinder不为空时被调用
        public void onServiceConnected(ComponentName name, IBinder service) {
            System.out.println("connected success");
        }

        @Override
        //这个是在服务发生异常或者被意外终止时才被调用,正常情况下不会被调用
        public void onServiceDisconnected(ComponentName name) {
            System.out.println("disconnected success");
        }

    }
}

1.4 测试结果:先执行bind操作,再执行unbind操作,得到的结果是:
这里写图片描述

这种服务是和Activity绑定在一起的,当Activity被销毁后,服务也会被终止。

  1. 然后是服务于Activity相互独立的情况。

2.1 首先是还是用上面的MyService.java

2.2 manifest中声明

2.3 在Activity中开启它。

public class MainActivity extends Activity {

    private Intent i;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void start(View view){
        //通过执行这个函数开启一个服务
        i=new Intent(this,MyService.class);
        startService(i);
    }
    public void stop(View view){
        //通过执行这个函数关闭服务
        stopService(i);
    }
}

2.4 这样的结果是:
这里写图片描述

Service的生命周期:
Service的生命周期和Activity类似,这里就不详细说了。

本篇博客主要介绍了Service的两种使用方法,当然,还有一些细节没有提到,比如第一种中的IBinder是个什么玩意儿。这里不说了,大家如果不会,可以留言~

1、安卓基础 4大组件介绍 Activity可以看成是安卓系统的根本,在这个根本上才可以进行其他的工作,因为在安卓系统里运行的所有的程序,它的流程都必须在【Activity】中运行,所有他是最基本的模块。当一个Paused状态的activity被重新返回时,会再次调用该方法,让Activity进入运行状态。Service:在前台不可见,但是承担大部分数据处理工作,它和Activity的地位是并列的,区别在于Activity运行于前台,Service运行于后台,没有图形用户界面,通常他为其他的组件提供后台服务或监控其他组件的运行状态。 阅读详情

相关推荐

android笔记安卓基础知识 四大组件、六大布局、五大存储

四大组件、六大布局、五大存储,HandlerThread ,Services

Android四大组件、七大布局详解

Android四大组件、七大布局详细内容。

LiuYong_01的博客 6140

保姆级教程:用海康威视老版存储服务器+IVMS-4200搭建本地监控录像(附软件获取与开机自启)

最近在帮朋友搭建一套小型监控系统时,遇到了一个颇具挑战性的问题:手头有几台海康威视网络摄像头,但官方已经下架了配套的存储服务器软件。经过一周的摸索和测试,终于找到了一套可靠的解决方案。本文将完整分享从软件获取到系统稳定运行的全过程,特别适合那些不想额外购买NVR设备,又需要本地存储监控录像的个人用户或小型企业IT管理员。

weixin_30553777的博客 515

安卓开发-03-四大组件

Android开发的四大组件

ning_xiao_xuan的博客 4798

单细胞双胞过滤-scrublet安装

pip install scrublet ----use-pep517有如下报错,分析可知安装annoy时不会自动更新gcc的版本,centos默认是4.8.5。pip install scrublet ----use-pep517 仍然报错,但似乎不影响使用,提示Successfully installed。打开终端,进入Python环境,输入以下代码,查看Python安装位置。暂时还没尝试是否存在问题,如果存在问题,降级scrublet版本。包的开发依赖的是比较低版本的numpy,会用到。

hzau_t的博客 792

模拟ic入门——设计一个单极运放(一)单级运算放大器设计基础

主要介绍了单级运放的基本理论和使用场景

qq_64956710的博客 3743

[Android]四大组件简介

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

Gamin 5926

UE4/5编译报错MSB3073终极解决指南:从路径检查到MSVC版本降级

本文针对UE4/5开发中常见的MSB3073编译报错,提供了一套从根源到实战的终极解决指南。文章系统性地讲解了错误成因,并分层次指导排查路径字符、环境变量、MSVC版本兼容性、权限冲突等核心问题,重点介绍了通过降级MSVC编译器版本等关键操作来彻底解决此编译难题。

rl6adventurer的博客 1435

Android系列:四大组件、五大存储、六大布局

文章目录一、四大组件**1、activity****2、service****3、content provider****4、broadcast receiver**android四大组件总结(1)4大组件的注册(2)4大组件的激活(3)4大组件的关闭(4)android中的任务(activity栈)二、六大界面布局:1. LinearLayout线性布局LinearLayout的常用XML属性及相关方法LinearLayout子元素支持的常用XML属性及方法2. TableLayout表格布局TableL

程序人生 5220

【数据集7】全球人类住区层GHSL数据详解

全球人类住区层GHSL数据详解

WW、forever的博客 2253

YOLOv11 模型剪枝实战:深入解析通道剪枝与层剪枝的策略与实现(含环境配置、微调技巧与部署测试)

YOLOv11模型剪枝技术通过移除冗余参数和结构来压缩模型,主要包括通道剪枝和层剪枝两种方法。通道剪枝通过评估批量归一化层的缩放因子γ确定通道重要性,移除不重要的特征通道;层剪枝则直接删除整个网络层或模块。剪枝流程包括评估重要性、移除冗余成分、微调模型和评估性能四个步骤。该技术可显著降低模型计算量和参数量,适合在资源受限设备上部署高性能目标检测模型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1960

Android四大组件

Android的一些基本所知(可做面试复习用)2019前言一、四大组件1.ActivityActivity的作用Activity的生命周期Activity的启动模式Activity可能会遇到的问题你后台的Activity被系统 回收怎么办:onSaveInstanceState2.ServiceService的作用Service的两种状态Service的两种状态ServiceIntentServi...

未来源起的博客 5735

别再让 AI 瞎写 SAP 代码了!这套 Claude Code Skill 的验证机制才是关键

本文深入解析了专为SAP CAP开发设计的AI辅助工具sap-cap-capire的技术架构。该工具采用四层设计:协议层集成MCP和LSP实现实时模型访问与语法检查;智能层通过4个专业化Agent(数据建模、服务开发等)分工协作;验证层确保代码质量;知识层存储文档模板。这种工程化设计解决了通用AI在CAP开发中面临的上下文不足、专业性缺失和代码质量保证等核心问题,通过本地化服务和实时反馈机制显著提升了开发效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 882

android四大组件哪个不需要在声明,Android四大组件之~~Service

开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver。今天来介绍其一:Service。一.Service和Thread有什么区别和联系,以及使用Service的必要性。Service和Thread没有没有什么直接的关系Service是Android四大组件之一,二Th...

weixin_33678821的博客 302

别再写XPath改DOM了!用OpenClaw零代码搞定爬虫全流程(抓取+清洗+存储)

免费版的大模型调用次数有限制(每天100次),但企业版是无限的,还能私有化部署;大模型分析DOM结构有时候会慢1-2秒,但比起节省的时间,完全可以接受;自定义Skill的文档还不够完善,但社区很活跃,有问题在Discord里问,很快就能得到回复。但总的来说,OpenClaw真的改变了我写爬虫的方式——以前我是“代码的奴隶”,现在我是“需求的提出者”,把时间花在更有价值的业务逻辑上,而不是重复繁琐的DOM调试上。如果你也在被传统爬虫折磨,强烈建议你试试OpenClaw,相信我,用了就回不去了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1314

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Android】基础回顾--四大组件

继承至BroadcastReceiver基类重写onReceiver()方法广播接收器收到相应广播后,会自动回调onReceiver()方法;一般情况下,onReceiver方法会涉及与其他组件之间的交互,如发送Notification、启动service等等;默认情况下,广播接收器运行在UI线程,因此onReceiver方法不能执行耗时操作,否则可能ANR。

2303_79296612的博客 3953

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android开发基础:四大组件 视图 事件监听 控件与布局

视图层采用视图树(View Tree)模型:用户界面中的界面元素以树型结构组织在一起,整个视图界面为一个视图树模型。视图树:由View控件或ViewGroup构成。View控件是界面的最基本的可视单元,是Android视图界面的基类。ViewGroup是由其它View或ViewGroup组成的显示单元,继承自View类,ViewGroup提供了布局方法。

IH_LZH的博客 4162

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[特殊字符] Android 四大组件全解析:不只是“会用”,更要“懂协作”!

摘要:本文系统讲解Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的协同工作机制。重点解析组件的生命周期管理、通信方式及常见陷阱,如Activity内存泄漏、Service后台限制、BroadcastReceiver的ANR风险等。通过下载场景示例展示组件松耦合协作流程,并对比传统用法与现代架构组件(ViewModel/LiveData/WorkManager)的演进趋势。最后给出组件开发的最佳实践建议,强调应结合Jetpack架

大四在找工作,如果公司有需要的可以联系我13086825462@163.com 1681

【Android学习】四大组件

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

m0_75208773的博客 3073

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

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

m0_73804764的博客 1万+

Android中的四大组件详解

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

joye123的博客 7561

关于 Android开发 四大组件

组件功能有无界面用途示例Activity展示界面有页面跳转Service后台服务无音乐播放、下载广播监听无电量、网络变化数据共享无读取通讯录。

Triste__chengxi的博客 3351

Android 的四大组件

Arodroid的四大组件: Activity Service与intentService LocalBroadcastManager的BroadcastReceiver ContentProvider

qq_62277763的博客 1081

Android学习——四大核心组件(核心知识点整理)

Android 开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。 Activity 1.定义:Activity组件,在应用中的一个Activity可以用来表...

UUUUUltraman的博客 9085

Android 学习日志(7) Service 在AndroidManifest.xml 文件中各个属性值的意义

&lt;service android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] androi

qq_29094161的博客 1213
上一篇: 切换Activity时的动画overridePendingTransition(A,B)解析
下一篇: 总体把握Android中的触摸事件处理
肖小的人儿
博客等级 码龄12年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值