`

Service详解

 
阅读更多

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详解

    Service是Android系统中的一个重要组件,它是应用程序框架的一部分,用于在后台长时间运行操作,即使用户与应用界面无交互。本文将深入探讨两种类型的Service:普通Service和远程AIDL(Android Interface Definition...

    Android服务Service详解

    【Android服务Service详解】 在Android应用开发中,Service是四大组件之一,用于执行长时间运行的任务,如后台音乐播放、网络数据下载等。Service不同于Activity,它没有用户界面,但可以在后台持续运行,即使用户...

    绑定服务BoundService详解之AIDL的使用(自定义属性也包含其中)

    在“绑定服务BoundService详解之AIDL的使用”中,我们将了解如何利用AIDL创建自定义的接口,以便在Activity与BoundService之间传递复杂的对象和数据。 首先,我们需要创建一个AIDL文件,例如`IMyService.aidl`,在...

    Web Service详解

    Web Service架构 Web Service vs. CORBA/DCOM/EJB Web Service是使用Web的新模式 通过程序自动启动和处理商务事务,而并非使用浏览器 能够在一个分布式的计算环境中动态地描述、发布、发现和调用 支持基于Web ...

    android Service 详解

    android Service 详解 很详细

    Web Service详解.doc

    Web Service是一种基于互联网的标准接口,旨在促进不同系统和应用程序之间的数据交换和通信。它通过使用HTTP、XML、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(通用发现、描述和集成)等开放技术,...

    Android Service 详解

    Android Service 详解

    Android服务Service_详解.pdf

    Android服务(Service)是Android操作系统中四个核心应用程序组件之一,其他三个分别是Activity、BroadcastReceiver和ContentProvider,它们在Android应用开发中的作用和使用场景各不相同。Service的作用主要体现在...

    Android开发Service详解

    在Android应用开发中,Service是一种非常关键的组件,它允许程序在后台长时间运行任务,即使用户已经离开了应用界面。Service主要用于执行不需要用户交互的长时间操作,比如播放音乐、下载数据或者处理网络请求。本...

    七、kubernetes Service详解.pdf

    Kubernetes Service是一个核心组件,它定义了访问一组Pod的策略,这些Pod提供了相同的应用功能。Service 为这些Pod提供了一个稳定的网络接口,让客户端可以通过这个接口访问到这些Pod。在Kubernetes中,Pod的IP地址...

    32 请按到场顺序发言—Completion Service详解.pdf

    CompletionService&lt;String&gt; service = new ExecutorCompletionService(pool); Stream.of("苹果", "梨", "葡萄", "桃") .forEach(fruit -&gt; service.submit(() -&gt; { // 模拟洗水果的时间 long washTime = ...; // ...

    Android服务Service_详解

    ## Android服务Service详解 ### 8.1 Service起步 Service是Android应用程序组件的重要组成部分,它主要用于在后台执行任务,不依赖于用户界面。Service通常用于执行长时间运行的操作,如下载数据、播放音乐或处理...

    Android service详解

    在Android开发中,Service是一种重要的组件,用于在后台执行长时间运行的任务,即使用户界面不再活动。Service分为两类:本地服务(Local Service)和远程服务(Remote Service)。 本地服务是依附于主进程的,与应用...

Global site tag (gtag.js) - Google Analytics