Android 使用onStartCommand进行保活详细代码
时间: 2024-02-23 16:57:48 浏览: 106
好的,下面是一个简单的 Android 服务保活的示例代码,使用 onStartCommand 方法实现:
```java
public class KeepAliveService extends Service {
private static final String TAG = "KeepAliveService";
private static final int SERVICE_ID = 1001;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand() called");
// 在此处启动一个前台服务,提高服务优先级
startForeground(SERVICE_ID, new Notification());
// 启动一个定时器,每隔一段时间发送一次广播,让系统知道服务仍在运行
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.example.KeepAliveBroadcast");
sendBroadcast(broadcastIntent);
}
}, 0, 10000); // 每隔10秒发送一次广播
// 返回 START_STICKY,表示系统会尝试重启服务,以便保活
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() called");
// 在此处停止定时器,并取消前台服务
stopForeground(true);
}
}
```
需要注意的是,在 Android 8.0 及以上版本中,前台服务需要在通知栏显示一个通知,否则会被系统认为是一种滥用行为,导致应用被杀死。因此,在启动前台服务时,需要传入一个通知对象。
阅读全文