diagnostic policy service 无法启动 错误5_震惊!Android IPC 之Service 还可以这么理解

本文深入剖析Android Service的开启与停止,包括显示开启、绑定开启及其区别。探讨Service执行耗时操作时的线程使用,以及Service与Thread、Manager的关系,强调Service在进程间通信中的作用。最后,鼓励读者深化Android底层原理学习。
摘要由CSDN通过智能技术生成

码农A:看见标题我就震惊了。

码农B:我也是。

码农C:我琢磨着,UC震惊部还缺人吗?这小编是个人才啊。

某小编:标题是震惊的,但内容是朴实无华的。

前言

Android四大组件:Activity、Service、BroadcastReceiver、ContentProvider。它们的作用分别是:

Activity--->配合View展示界面
Service--->长时间在后台运行不与用户直接交互
BroadcastReceiver--->接收广播
ContentProvider--->提供数据给其他模块使用

本篇文章着重分析Service,通过它,你将了解到:

1、Service 开启与停止
2、Service 执行耗时操作
3、Service 与Thread、Manager关系
4、Service 进程间通信初相识

1、Service 开启与停止

先定义一个Service类,名为MyService,继承自Service。

public class MyService extends Service {

    public MyService() {
        super();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        //必须重写该方法,该方法为抽象方法
        //绑定开启Service会调用该方法
        return null;
    }

    @Override
    public void onCreate() {
        //Service初次创建会调用该方法,我们可以做一些初始化操作, 与onDestroy()相对
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //每次显示启动Service都会调用该方法
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        //Service销毁时调用该方法,在该方法里我们可以做释放资源的操作,与onCreate()相对
        super.onDestroy();
    }
}

这是一个最简单的Service Demo。
接着想要使用该Service,还需要在AndroidManifest.xml里注册:

<service android:name=".service.MyService">
        </service>

Service定义好了,怎么使用呢?开启Service有两种方式:

1、显示开启------> startService(Intent intent)
2、绑定开启------> bindService(Intent intent) 这俩都是Context里的方法

显示开启Service

构造Intent,传入startService(Intent intent)里。

private void startService() {
        Intent intent = new Intent(this, MyService.class);
        startService(intent);
    }

通过此种方式,Service调用方法如下:

c167a75c8aa096e110b664e95a39dd1b.png

需要注意的点是:

当再次开启一个已经存在的Service的时候,onStartCommand(xx)依然会被调用。

显示关闭Service

显示开启Service后,Service就已经启动了。
若要关闭Service,通过如下方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值