service


活动(Activity)

  • 定义:Activity是一个可以通过用户直接交互的屏幕。它是用户与应用交互的窗口,可以包含各种视图(View)和视图组(ViewGroup)。
  • 生命周期:Activity具有丰富的生命周期,包括创建(onCreate)、启动(onStart)、运行(onResume)、暂停(onPause)、停止(onStop)和销毁(onDestroy)等状态。
  • 用户界面:Activity负责管理用户界面。每个Activity通常对应应用中的一个屏幕。
  • 交互:Activity可以直接与用户交互,响应用户的输入,如点击、滑动等。
  • 任务和回退栈:Activity通常被组织在任务和回退栈中,用户可以通过按下返回键来导航。

服务(Service)

  • 定义:Service是一个运行在后台,不提供直接用户界面的组件。它用于执行长时间运行的操作,或者为远程组件(如Activity)提供功能。
  • 生命周期:Service的生命周期比Activity简单,主要包括创建(onCreate)、绑定(onBind)、未绑定(onUnbind)、销毁(onDestroy)等状态。
  • 后台任务:Service适合执行不需要用户直接交互的后台任务,如播放音乐、处理文件、执行网络请求等。
  • 绑定和通信:Service可以通过绑定机制与Activity通信。Activity可以通过调用Service的bindService方法来绑定Service,并使用回调接口(Binder)与Service进行交互。
  • 前台和后台:Service可以运行在前台或后台。前台Service通常会显示一个持续的通知,以便用户知道Service正在运行。

服务周期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MusicService extends Service {
private MediaPlayer mediaPlayer;

@Override
public void onCreate() {
super.onCreate();
mediaPlayer = MediaPlayer.create(this, R.raw.your_music_file); // 你的音乐文件
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mediaPlayer.start();
return START_STICKY; // 确保服务在被系统杀掉后重新启动
}

@Override
public void onDestroy() {
mediaPlayer.stop();
mediaPlayer.release();
super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
return null; // 如果不需要绑定,返回null
}
}

onStartCommand 是 Android 服务中的一个回调方法,用于处理启动服务的请求。具体来说,它在以下情况下被调用

返回值:

onStartCommand 需要返回一个整数,表示服务的启动模式:

  • START_STICKY:如果系统杀死了服务,重启时会调用 onStartCommand,但不会传递原来的 Intent
  • START_NOT_STICKY:如果系统杀死了服务,则不重启服务。
  • START_REDELIVER_INTENT:如果系统杀死了服务,重启时会调用 onStartCommand,并传递最后的 Intent

服务启动

R.raw.your_music_file 是指将音乐文件放在项目的 res/raw 目录下。在 Android Studio 中,你可以右击 res 文件夹,选择 “New” > “Directory” 创建 raw 文件夹,然后将你的音乐文件放入其中。确保文件名是小写字母,并且不包含空格或特殊字符


文章作者: K1T0
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 K1T0 !
  目录