Service详解
1.后台运行,没有界面与activity相对。
2.Service更不容被回收,相对于全局对象或后台activity来说。
Service生命周期:
使用startService启动服务
service没有启动时:
onCreate()- >onStartCommand()
service已经启动时:
onStartCommand()
对应使用stopService()结束服务:
1.只有在没有人连到该服务时才会执行。
onDestroy()
使用bindService连接服务:
service没有启动时:
onCreate()->onBind()
service已经启动时:
1.必须是第一连接此服务才
onbind
对应使用unbindService断开连接
onUnbind()
unbindService只有在,1.service不是startSevice启动的或者是startSevice启动已经调用了stopService,2.并且没人没有人连到该服务才会执行
ondestroy()
startService的目的是启动service
bindService目的获得service的引用。
starService代码
Intent startIntent = new Intent(this, MyService.class); startService(startIntent);
bindService代码
Intent intent = new Intent(MainActivity.this, MyService.class); bindService(intent, connection, BIND_AUTO_CREATE); private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.e(TAG, "onServiceConnected()"); myBinder = (MyService.MyBinder) service; } @Override public void onServiceDisconnected(ComponentName name) { Log.e(TAG, "onServiceDisconnected()"); } }; public class MyService extends Service { @Override public IBinder onBind(Intent intent) { Log.e(TAG, "onBind()"); return new MyBinder(); } public class MyBinder extends Binder { } }
aidl:Android Interface Definition Language
package com.lina.android.activitydemo; interface MyAIDL { void fun(); } public class MyService extends Service { public static final String TAG = "MyService"; @Override public IBinder onBind(Intent intent) { Log.e(TAG, "onBind()"); return new MyBinder(); } public class MyBinder extends MyAIDL.Stub { @Override public void fun() throws RemoteException { } } } <service android:name=".MyService"> <intent-filter> <action android:name="lina123" /> </intent-filter> </service> ------------------------------------------------------------------ package com.lina.android.activitydemo; interface MyAIDL { void fun(); } Intent intent = new Intent("lina123"); bindService(intent, connection, BIND_AUTO_CREATE); public ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { MyAIDL myAIDL = MyAIDL.Stub.asInterface(service); try { myAIDL.fun(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } };
Activity与Service通讯
activty主动把数据传给service可以通过广播,重要是是bindservice。
service主动把数据传给activity可以通过广播。
相关推荐
Service是Android系统中的一个重要组件,它是应用程序框架的一部分,用于在后台长时间运行操作,即使用户与应用界面无交互。本文将深入探讨两种类型的Service:普通Service和远程AIDL(Android Interface Definition...
【Android服务Service详解】 在Android应用开发中,Service是四大组件之一,用于执行长时间运行的任务,如后台音乐播放、网络数据下载等。Service不同于Activity,它没有用户界面,但可以在后台持续运行,即使用户...
在“绑定服务BoundService详解之AIDL的使用”中,我们将了解如何利用AIDL创建自定义的接口,以便在Activity与BoundService之间传递复杂的对象和数据。 首先,我们需要创建一个AIDL文件,例如`IMyService.aidl`,在...
Web Service架构 Web Service vs. CORBA/DCOM/EJB Web Service是使用Web的新模式 通过程序自动启动和处理商务事务,而并非使用浏览器 能够在一个分布式的计算环境中动态地描述、发布、发现和调用 支持基于Web ...
android Service 详解 很详细
Web Service是一种基于互联网的标准接口,旨在促进不同系统和应用程序之间的数据交换和通信。它通过使用HTTP、XML、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(通用发现、描述和集成)等开放技术,...
Android Service 详解
Android服务(Service)是Android操作系统中四个核心应用程序组件之一,其他三个分别是Activity、BroadcastReceiver和ContentProvider,它们在Android应用开发中的作用和使用场景各不相同。Service的作用主要体现在...
在Android应用开发中,Service是一种非常关键的组件,它允许程序在后台长时间运行任务,即使用户已经离开了应用界面。Service主要用于执行不需要用户交互的长时间操作,比如播放音乐、下载数据或者处理网络请求。本...
Kubernetes Service是一个核心组件,它定义了访问一组Pod的策略,这些Pod提供了相同的应用功能。Service 为这些Pod提供了一个稳定的网络接口,让客户端可以通过这个接口访问到这些Pod。在Kubernetes中,Pod的IP地址...
CompletionService<String> service = new ExecutorCompletionService(pool); Stream.of("苹果", "梨", "葡萄", "桃") .forEach(fruit -> service.submit(() -> { // 模拟洗水果的时间 long washTime = ...; // ...
## Android服务Service详解 ### 8.1 Service起步 Service是Android应用程序组件的重要组成部分,它主要用于在后台执行任务,不依赖于用户界面。Service通常用于执行长时间运行的操作,如下载数据、播放音乐或处理...
在Android开发中,Service是一种重要的组件,用于在后台执行长时间运行的任务,即使用户界面不再活动。Service分为两类:本地服务(Local Service)和远程服务(Remote Service)。 本地服务是依附于主进程的,与应用...