Android四大组件之service

Posted 我想月薪过万

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android四大组件之service相关的知识,希望对你有一定的参考价值。

什么是service?

定义:长期运行在后台的程序。

书面表达:首先它是一个组件,用于执行长期运行的任务,并且与用户没有交互。

注意事项

每一个服务都需要在配置文件androidManifest.xml文件里声明,申明方式如下:

使用<service>标签,其实就是跟Activity一样申明。

启动服务的方式有:Context.startService()  /  Context.bindService()

关闭服务的方式有:Context.stop()Service()  /  Context.unBindService()

为什么要使用服务

服务使用步骤

第一步:继承 Service 自定义 FirstService 类

package services;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.Nullable;

/**
 * ClassName: FirstService <br/>
 * Description: <br/>
 * date: 2021/10/17 21:44<br/>
 *
 * @author yiqi<br />
 * @QQ 1820762465
 * @微信 yiqiideallife
 * @技术交流QQ群 928023749
 */
public class FirstService extends Service {

    private static final String TAG = FirstService.class.getClass().getSimpleName();

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate...");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand...");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy...");
    }
}

第二步:声明 FirstService

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wust.testdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.TestDemo">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name="services.FirstService"/> // 就是这一行
    </application>

</manifest>

第三步:开启 和 关闭服务 (方法一)

package com.wust.testdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import services.FirstService;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void startServiceClick(View view) {
        Intent intent = new Intent();
        // 开启服务
        intent.setClass(this, FirstService.class);
        startService(intent);
    }

    public void stopServiceClick(View view) {
        Intent intent = new Intent();
        // 停止服务
        intent.setClass(this, FirstService.class);
        stopService(intent);
    }
}

效果展示

开启服务的打印
D/Class: onCreate...
    onStartCommand...

结束服务的打印
D/Class: onDestroy...

//多次点击开启服务的打印
D/Class: onStartCommand...

 activity_main文件代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:onClick="startServiceClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="开启服务"/>

    <Button
        android:onClick="stopServiceClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="停止服务"/>

</LinearLayout>

以上是关于Android四大组件之service的主要内容,如果未能解决你的问题,请参考以下文章

Android四大组件之service

android 四大组件之---Service

Android四大组件service之Bound Service

android 四大组件之Service 粘性与非粘性

Android四大组件之Service

android 四大组件之Service 结合通知