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的主要内容,如果未能解决你的问题,请参考以下文章