• Stars
    star
    296
  • Rank 140,464 (Top 3 %)
  • Language
    Java
  • Created over 6 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android端心跳服务与进程保活

DaemonService

Android端心跳服务与进程保活

使用

继承AbsHeartBeatService抽象心跳服务,在onHeartBeat()中处理自己的任务,具体保活策略不需要关心

public class HeartBeatService extends AbsHeartBeatService {

    @Override
    public void onStartService() {
    }

    @Override
    public void onStopService() {
    }

    @Override
    public long getHeartBeatMillis() {
        return 30 * 1000;
    }

    @Override
    public void onHeartBeat() {
    }
}

在Manifest中注册服务

<service android:name=".HeartBeatService"/>

初始化并启动服务

DaemonHolder.init(this, HeartBeatService.class);

实现思想

实现进程保活,暂时实现了双进程守护、JobService检测与拉起、进程死亡AlarmManager定时拉起、 广播监听(网络变化、开机等),同时通过Timer和TimerTask实现心跳服务。

1、双进程守护

双进程即本地进程和远程进程,看两个类: AbsHeartBeatService:本地进程,抽象的心跳服务 DaemonService:远程进程,即守护进程 启动本地服务后会启动远程进程的服务并绑定远程服务,同时远程服务也会绑定本地进程的服务, 任何一个服务停止都会得到另一个进程的Binder通知,即刻被拉起,实现进程保活的一种方式

2、JobService检测与拉起

Android5.0以上可以使用JobService来做定时任务,定时检测本地进程的服务是否在运行,参考JobSchedulerService, 但是个别深度定制的ROM厂商屏蔽了JobService,比如小米手机。

3、进程死亡AlarmManager定时拉起

AlarmManager是提供一种访问系统闹钟服务的方式,允许你去设置在将来的某个时间点去执行你的应用程序。 当你的闹钟时间到时,在它上面注册的一个意图(Intent)将会被系统以广播发出,然后自动启动目标程序,如果它没有正在运行。 所以,不管是我们的本地进程还是我们的远程进程,如果他们死了,就在死的时候定一个被拉活的闹钟,等待复活。

4、广播监听

动态广播监听:网络变化、开屏、锁屏、解锁、点击Home键
静态广播监听:开机、连接电源、断开电源、安装应用、卸载应用

More Repositories

1

MarqueeView

俗名:可垂直跑、可水平跑的跑马灯;学名:可垂直翻、可水平翻的翻页公告
Java
3,771
star
2

StickyHeaderListView

打造炫酷列表之 StickyHeaderListView:标题渐变、吸附悬浮、筛选分类、动态头部等
Java
2,815
star
3

GlideImageView

基于Glide V4.9.0封装的图片加载库,可以监听加载图片时的进度
Java
1,767
star
4

DroidVR

360°全景图是一个值得把玩的应用
Java
659
star
5

Bingo

Bingo是一款IT阅读学习类的开源软件,在不久的将来会拥有丰富的学习内容,推荐您也来用用来看看,在这里您也可以发布好的干货链接文章。
Java
521
star
6

In-depthStudy

Android 相关技术深入学习项目
Java
471
star
7

Gank.IO

干货集中营Android客户端
Java
215
star
8

FirUpdater

Fir.im通道APK更新器,使用简单,让自己的demo快速具备升级功能
Java
150
star
9

Tuling

图灵机器人,可以聊天的机器人,快去和它玩耍吧
Java
128
star
10

MultiType

【MultiType】可以轻松地实现RecyclerView显示多种数据类型,数据对应布局一对多、多对多、多对一,可以注册全局类型、局部类型、默认类型
Java
83
star
11

DroidSmall

该项目是 Small 插件化调研和学习的示例应用,希望对你有帮助。
Groovy
57
star
12

FaceDetection

使用Face++接口实现简单的人脸识别和人脸追踪
Java
47
star
13

GroupRecyclerViewAdapter

可增删改查、可动画展开收起、可吸附悬浮动态可配置的分组列表
Java
46
star
14

Algo

这是一款 Kotlin 语言版本的 Android 客户端本地化展示 Java 语言编写的面试算法 ( Algorithm ),会持续更新!
Java
33
star
15

SPI

SPI (Service Provider Interface) 助力 Android 组件化开发
Java
13
star
16

CodeViewer

Android 端代码查看器
JavaScript
12
star
17

GitHub

一款精美的 GitHub Java 版 Android 客户端
Java
7
star
18

DroidModule

Android 应用模块化开发
Java
5
star
19

NestedScrollableDemo

Java
5
star
20

DroidPlayer

Java
4
star
21

JNILog

本地C++代码调用Java代码实现打印Log日志
Java
3
star
22

GitHub-Kotlin

Kotlin
2
star
23

SmartLockSystem

SmartLockSystem
Java
2
star
24

sunfusheng.github.io

The blog of sunfusheng
CSS
2
star
25

plugin-info

自定义gradle插件,应用在运行时显示编译时的信息:第三方库、编译时间
Groovy
2
star
26

AOP

Java
2
star
27

MVVM

Androidx Kotlin MVVM Architecture
Kotlin
2
star
28

VLayoutDemo

Java
2
star
29

Dagger2Kotlin

Kotlin
1
star
30

github_flutter

Dart
1
star