android服务重启间隔,android – 崩溃的服务在很长一段时间后重新启动
从
com/android/server/am/ActiveServices.java(未曝光)
// How long we wait for a service to finish executing.
static final int SERVICE_TIMEOUT = 20*1000;
// How long a service needs to be running until restarting its process
// is no longer considered to be a relaunch of the service.
static final int SERVICE_RESTART_DURATION = 5*1000;
// How long a service needs to be running until it will start back at
// SERVICE_RESTART_DURATION after being killed.
static final int SERVICE_RESET_RUN_DURATION = 60*1000;
// Multiplying factor to increase restart duration time by, for each time
// a service is killed before it has run for SERVICE_RESET_RUN_DURATION.
static final int SERVICE_RESTART_DURATION_FACTOR = 4;
// The minimum amount of time between restarting services that we allow.
// That is, when multiple services are restarting, we won't allow each
// to restart less than this amount of time from the last one.
static final int SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000;
// Maximum amount of time for there to be no activity on a service before
// we consider it non-essential and allow its process to go on the
// LRU background list.
static final int MAX_SERVICE_INACTIVITY = 30*60*1000;
你发生的事情可能是你的服务比SERVICE_RESET_RUN_DURATION快死,然后重启时间乘以SERVICE_RESTART_DURATION_FACTOR.
从第881行开始:
// If it has been a "reasonably long time" since the service
// was started, then reset our restart duration back to
// the beginning, so we don't infinitely increase the duration
// on a service that just occasionally gets killed (which is
// a normal case, due to process being killed to reclaim memory).
if (now > (r.restartTime+resetTime)) {
r.restartCount = 1;
r.restartDelay = minDuration;
} else {
if ((r.serviceInfo.applicationInfo.flags
&ApplicationInfo.FLAG_PERSISTENT) != 0) {
// Services in peristent processes will restart much more
// quickly, since they are pretty important. (Think SystemUI).
r.restartDelay += minDuration/2;
} else {
r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR;
if (r.restartDelay < minDuration) {
r.restartDelay = minDuration;
}
}
}
下面的行将支持您的服务.
r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR;
因此,如果您的服务在运行SERVICE_RESET_RUN_DURATION之前死亡,您应该修复此案例.
android服务重启间隔,android – 崩溃的服务在很长一段时间后重新启动相关推荐
- Docker服务正常运行一段时间后突然无法访问问题排查
文章目录 服务器重启后Docker服务访问失败 一. 检查服务容器是否启动 如果有容器未启动就启动容器 二.检查是否被防火墙屏蔽 如果端口未开放,有两种情况: 1. 不需要防火墙,直接关掉防火墙服务 ...
- android 停止一段时间,repo sync 工作一段时间后就停止了
$?=1; while [ $? -ne 0 ] ; do repo sync ; done 然后repo sync 工作一段时间后就不动了: Fetching projects: 95% (210 ...
- macbook pro 待机一段时间后就自动关机重启
macbook pro 待机一段时间后就自动关机重启,在百度找了好久,一直没有找到具体原因,然后google 了一下终于找到原因了,是因为 系统偏好设置-安全性与隐私-通用-高级 在60分钟不活跃后退 ...
- android强制重启app,android比较便捷的重启APP的方法
前言: 开发过程中,有项需求需要重启APP,谷歌之后都是清一色的代码,可惜自己试了之后真心没用,只能自己想办法了.(PS:百度就算了,对于程序员来说,百度简直就是"玩具度".个人感 ...
- android中按钮间隔,Android布局有2个均匀间隔的按钮
我有这个布局正常工作,相对布局与文本视图和两个按钮均匀分布在它下面. android:layout_width="fill_parent" android:layout_heigh ...
- android edittext字体间隔,android Edittext内容字体大小动态变化
转自:edittext内容随字体大小动态变化,具体代码如下: package com.yitong.mbank.android.views; import android.content.Contex ...
- android代码重启设备,Android设备重启(reboot)---Android studio
//another test Process p=Runtime.getRuntime().exec(cmd); Runtime.getRuntime().exec(String.valueOf(p. ...
- cefsharp项目开发浏览器运行一段时间后cefsharp.browsersubprocess崩溃问题
基于cefsharp项目用C#开发的程序在windows 系统上运行一段时间老是出现崩溃卡死的情况 如下图: 经过多次测试和调查 发现是在部分机器上才出现该问题 ,其他机器连续运行一周也无错误出现 研 ...
- android vsync信号间隔,Android SurfaceFlinger服务(五) ----- VSync信号的产生
Android为了增强界面流畅度引入了VSync机制.VSync信号一般由硬件产生,为了兼容一些老的机器,也可以软件产生.因些,就可以分为硬件VSync和软件VSync.VSync的生成逻辑主要在HW ...
最新文章
- mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
- linux下载b站的视频+ffmpeg抽取出mp3
- zabbix安装步骤
- 沉浸式全息本是什么_够炫酷!联想全息教学设备,构建沉浸式教学场景
- java gc回收算法_Java基础之GC垃圾回收的历史
- php面试题之一——HTML+CSS(基础部分)
- 攻防世界-Misc-gif
- 关于autoconf
- VS C#/C++ 工具箱显示出来 工具箱不见了
- 计算机模拟学,深度学习是让计算机模拟
- ES6、7学习笔记(尚硅谷)-4-模板字符串
- 成为嵌入式高手,少不了这100多个软硬件开源项目
- Code.V光学设计学习(一)——入门介绍
- echarts 设置地图默认缩放比例 尺寸
- js图片轮播指示器箭头淡入淡出
- 设计简单计算机主机系统,【效率】专为Win7系统设计的最小Pomodoro-MiniPomodoro(随附...
- Grammar API
- 【PHP】极速分销裂变,疯狂砍价活动
- Description 给出一个N*N的二维数组,求出其中的最大数和其所在的行号、列号(均从0开始计算)。 Input 第1行是一个正整数N(2≤N≤10),表示二维数组的大小。后跟N行,每行N个数。
- 标签系列二:spring 中bean解释以及bean标签里面的属性