每天学习一点点,成功增加一大步

Android 四大组件之一 Service 的创建

Android zhanghui 99℃

这两天在写 Android APP 项目的一个 Service 的需求,Service 是 Android 的四大组件之一。多年前在刚接触学习 Android 时接触过,但多年没有写 Android 淡忘掉了怎么写它的流程。这次既然遇到了就记录下。

至于 Service 组件在 Android 中的作用,这里就不多写了网络都有(随便百度一下就出现一大堆)回到正题。

在项目中的菜单中选择新建 Service 类型文件来创建 MyService 并继承系统的 Service 类。

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyService extends Service {
    private static String TAG = "MyService";

    //必须要实现的方法
    @Override
    public IBinder onBind(Intent intent) {
        Common.Log(TAG, "onBind方法被调用!");
        return null;
    }

    //Service被创建时调用
    @Override
    public void onCreate() {
        Common.Log(TAG, "onCreate方法被调用!");
        super.onCreate();
    }

    //Service被启动时调用
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Common.Log(TAG, "onStartCommand方法被调用!");
        return super.onStartCommand(intent, flags, startId);
    }

    //Service被关闭之前回调
    @Override
    public void onDestroy() {
        Common.Log(TAG, "onDestroy 方法被调用!");
        super.onDestroy();
    }

}

这里的 Common.Log 是指(下同)

Log.i(MyApplication.TAG + " " + tag, msgStr);

AndroidManifest.xml 注入 MyService,一般在 Android Studio 中通过上述操作创建 Service 文件,基本上都会自动帮助你写好一个基本的注入代码,但后面还需要自己根据实际需求去修改相关属性参数,参数的作用自己百度吧,下面是我的设置代码。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="……">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
       ……
        <service
            android:name=".MyService"
            android:description="@string/service_description"
            android:directBootAware="true"
            android:enabled="true"
            android:exported="false"
            android:label="@string/service_description" />

       ……
    </application>

</manifest>

到这里就基本上完成了 Service 的创建。

Service 虽然已经被创建,但它不仅因自家的 Activity 的释放被杀死,也被 Android 杀死,如何解决它的生命期的问题,请看

Android 四大组件之一 Service 的永久驻留

转载请注明:隨習筆記 » Android 四大组件之一 Service 的创建

喜欢 (0)