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 – 崩溃的服务在很长一段时间后重新启动相关推荐

  1. Docker服务正常运行一段时间后突然无法访问问题排查

    文章目录 服务器重启后Docker服务访问失败 一. 检查服务容器是否启动 如果有容器未启动就启动容器 二.检查是否被防火墙屏蔽 如果端口未开放,有两种情况: 1. 不需要防火墙,直接关掉防火墙服务 ...

  2. android 停止一段时间,repo sync 工作一段时间后就停止了

    $?=1; while [ $? -ne 0 ] ; do repo sync ; done 然后repo sync 工作一段时间后就不动了: Fetching projects:  95% (210 ...

  3. macbook pro 待机一段时间后就自动关机重启

    macbook pro 待机一段时间后就自动关机重启,在百度找了好久,一直没有找到具体原因,然后google 了一下终于找到原因了,是因为 系统偏好设置-安全性与隐私-通用-高级 在60分钟不活跃后退 ...

  4. android强制重启app,android比较便捷的重启APP的方法

    前言: 开发过程中,有项需求需要重启APP,谷歌之后都是清一色的代码,可惜自己试了之后真心没用,只能自己想办法了.(PS:百度就算了,对于程序员来说,百度简直就是"玩具度".个人感 ...

  5. android中按钮间隔,Android布局有2个均匀间隔的按钮

    我有这个布局正常工作,相对布局与文本视图和两个按钮均匀分布在它下面. android:layout_width="fill_parent" android:layout_heigh ...

  6. android edittext字体间隔,android Edittext内容字体大小动态变化

    转自:edittext内容随字体大小动态变化,具体代码如下: package com.yitong.mbank.android.views; import android.content.Contex ...

  7. android代码重启设备,Android设备重启(reboot)---Android studio

    //another test Process p=Runtime.getRuntime().exec(cmd); Runtime.getRuntime().exec(String.valueOf(p. ...

  8. cefsharp项目开发浏览器运行一段时间后cefsharp.browsersubprocess崩溃问题

    基于cefsharp项目用C#开发的程序在windows 系统上运行一段时间老是出现崩溃卡死的情况 如下图: 经过多次测试和调查 发现是在部分机器上才出现该问题 ,其他机器连续运行一周也无错误出现 研 ...

  9. android vsync信号间隔,Android SurfaceFlinger服务(五) ----- VSync信号的产生

    Android为了增强界面流畅度引入了VSync机制.VSync信号一般由硬件产生,为了兼容一些老的机器,也可以软件产生.因些,就可以分为硬件VSync和软件VSync.VSync的生成逻辑主要在HW ...

最新文章

  1. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
  2. linux下载b站的视频+ffmpeg抽取出mp3
  3. zabbix安装步骤
  4. 沉浸式全息本是什么_够炫酷!联想全息教学设备,构建沉浸式教学场景
  5. java gc回收算法_Java基础之GC垃圾回收的历史
  6. php面试题之一——HTML+CSS(基础部分)
  7. 攻防世界-Misc-gif
  8. 关于autoconf
  9. VS C#/C++ 工具箱显示出来 工具箱不见了
  10. 计算机模拟学,深度学习是让计算机模拟
  11. ES6、7学习笔记(尚硅谷)-4-模板字符串
  12. 成为嵌入式高手,少不了这100多个软硬件开源项目
  13. Code.V光学设计学习(一)——入门介绍
  14. echarts 设置地图默认缩放比例 尺寸
  15. js图片轮播指示器箭头淡入淡出
  16. 设计简单计算机主机系统,【效率】专为Win7系统设计的最小Pomodoro-MiniPomodoro(随附...
  17. Grammar API
  18. 【PHP】极速分销裂变,疯狂砍价活动
  19. Description 给出一个N*N的二维数组,求出其中的最大数和其所在的行号、列号(均从0开始计算)。 Input 第1行是一个正整数N(2≤N≤10),表示二维数组的大小。后跟N行,每行N个数。
  20. 标签系列二:spring 中bean解释以及bean标签里面的属性

热门文章

  1. iis7.5 php 404.17,win2008 r2中IIS7.5及以上设置404错误页面的正确方法
  2. Promise基础用法
  3. mysql密码遗忘和登陆报错问题
  4. exchange2007收件人管理
  5. iPhone How-to:如何调整UIView的Z-Order
  6. pcDuino 刷系统-卡刷
  7. 阿里巴巴笔试题-马尔科夫(HMM)的特征
  8. 《文献检索》随感-2003年10月24日
  9. DevTools 实现原理与性能分析实战
  10. 正则表达式学习神器!