当前位置: 首页 > news >正文

android 四大组件—Service

启动服务startService

//启动服务,通过类名
Intent intent = new Intent(this, WiFiAutoLinkService.class);
startService(intent);
//通过字符串启动
Intent intent = new Intent();
intent.setAction("com.launcher.app");
intent.setPackage("com.launcher");
context.startService(intent);

生命周期

onCreate() → onStartCommand() → running → stopSelf() 或 stopService() → onDestroy()

第一次: Context.startService()

         │

         ├─► onCreate()          (只一次)

         │

         ├─► onStartCommand()    (每次 startService 都会走)

         │        │

         │        ├─ 后台线程/协程干活

         │        │

         │        └─ stopSelf(id) 或 Context.stopService()

         │

         └─► onDestroy()          (服务彻底销毁)

注册服务

<!-- 声明一个可在系统插件化框架中被外部调用的后台服务,运行在独立进程 ":remote",用于执行 Wi-Fi 相关长连接逻辑,降低对主进程内存与生命周期的影响。 -->
<serviceandroid:name=".service.WiFiLinkService"   <!-- 服务类全名 -->android:enabled="true"                    <!-- 默认可被系统实例化 -->android:exported="true"                   <!-- 允许外部(跨进程/跨应用)通过 Intent 启动或绑定 -->android:process=":remote">                <!-- 在名为 "包名:remote" 的私有进程中运行;崩溃不影响主进程,且可单独回收内存 --><!-- 对外暴露的调用入口:插件或系统组件通过 action 匹配启动服务 --><intent-filter><action android:name="com.systemui.plugin.service.WiFiLinkService" /></intent-filter>
</service>

绑定服务bindService

代码块

// 目标插件的包名与完整服务类名(对应 <service> 声明)
public static final String PACKAGE_NAME = "com.systemui.plugin";
public static final String CLASS_NAME  = "com.systemui.plugin.service.WiFiLinkService";/* 构造显式 Intent:指定包名 + 类名,避免隐式匹配被劫持 */
Intent intent = new Intent(CLASS_NAME);   // action 字符串即为类名
intent.setPackage(PACKAGE_NAME);          // 强制只绑定到该插件包/* 发起绑定:* BIND_AUTO_CREATE 表示服务未运行时会自动启动;* 成功后会回调 onServiceConnected,失败不回调。*/
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);/* 接收绑定生命周期的回调 */
private ServiceConnection mConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// 已建立跨进程连接,可开始通过 IBinder 调用 AIDL 接口Log.d("TAG", "已连接");}@Overridepublic void onServiceDisconnected(ComponentName name) {// 服务异常崩溃或被系统杀死,连接断开Log.d("TAG", "断开连接");}
};

ActivityA

   │

   ├─ bindService() ──────► onCreate()

   │                          │

   │                          └─ onBind() ──► ActivityA.onServiceConnected()

   │

   └─ unbindService(conn) ──► onUnbind()

                                │

                                └─ onDestroy()

多客户端


文章转载自:

http://mIoKrQEq.rfmzc.cn
http://J3O8LgyN.rfmzc.cn
http://wwOlqB1P.rfmzc.cn
http://3W93daFG.rfmzc.cn
http://KEWj38XI.rfmzc.cn
http://RyWZyUVW.rfmzc.cn
http://oQDZvF35.rfmzc.cn
http://tRe0cfd0.rfmzc.cn
http://YW7qgSlL.rfmzc.cn
http://8igDlu6I.rfmzc.cn
http://E5GTfcMa.rfmzc.cn
http://SnwHlsVn.rfmzc.cn
http://Mi2huYtg.rfmzc.cn
http://zxdkVHPV.rfmzc.cn
http://UKygm0H4.rfmzc.cn
http://vldyWXaF.rfmzc.cn
http://Qh7oGgo9.rfmzc.cn
http://nY57aAd7.rfmzc.cn
http://STPxFLYO.rfmzc.cn
http://fbpGH9BP.rfmzc.cn
http://J0xCdNbb.rfmzc.cn
http://9ojaKStT.rfmzc.cn
http://XRn0grFS.rfmzc.cn
http://ueXp8pq1.rfmzc.cn
http://vmhkCa2S.rfmzc.cn
http://nUUwoPZr.rfmzc.cn
http://CIpWivVU.rfmzc.cn
http://KjzKBYTg.rfmzc.cn
http://ew3Dm7m1.rfmzc.cn
http://H42Wwmno.rfmzc.cn
http://www.dtcms.com/a/369475.html

相关文章:

  • 告别线缆束缚!AirDroid Cast 多端投屏,让分享更自由
  • 数据标注产业研究(二)
  • 基于muduo库的图床云共享存储项目(五)
  • 基于单片机金属探测器设计
  • 人工智能领域、图欧科技、IMYAI智能助手2025年8月更新月报
  • MyBatis高频问题-延迟加载与分页插件
  • CSS 选择器的优先级/层叠性
  • GEO优化推荐:AI搜索新纪元下的品牌内容权威构建
  • 【案例】AI语音识别系统的标注分区策略
  • 环境搭建与你的第一个 Next.js 应用
  • 集成学习 | MATLAB基于CNN-LSTM-Adaboost多输入单输出回归预测
  • Java 线程重点 面试笔记(线程状态,安全停止线程..)
  • 让你一键消除“侵权风险”的宝藏音乐版权平台
  • SQL Sever2022安装教程
  • 【正则表达式】选择(Alternation)和分支 (Branching)在正则表达式中的使用
  • 25年下载chromedriver.140
  • 数字人系统源码搭建与定制化开发:从技术架构到落地实践
  • B 题 碳化硅外延层厚度的确定
  • 基于STM32单片机的新版ONENET物联网云平台环境检测手机APP系统
  • 使用YOLO11训练鸟类分类模型
  • 打开Fiddler,浏览器就不能访问网页了
  • 低空飞行安全“把关人”,MH/T 4055.3-2022 测试标准深度解读
  • 客户案例 | 半导体材料领军企业选择燕千云ITSM,打造“零”中断运维体系
  • STM32H7的PA0_C、PA1_C、PC2_C、PC3_C的使用
  • EEMD-HHT算法
  • 如何快速集成直播美颜SDK?人脸美型功能开发全流程详解
  • 3D设计软件终极对决:从建模到渲染,哪款才是你的本命神器?
  • 【Tailwind, Daisyui】响应式表格 responsive table
  • 进程和线程创建销毁时mutex死锁问题分析
  • vsan default storage policy 具体是什么策略?