android 关于提高第三方app的service优先级

android 关于提高第三方app的service优先级

大家好,又见面了,我是全栈君。

本博客仅仅要没有注明“转”。那么均为原创,转贴请注明本博客链接链接


基本上大家都知道提高service优先级能够在非常大程度上让你的service免于由于内存不足而被kill,当然系统仅仅是在此时先把优先级低的kill掉。假设内存还是不够,也会把你的service干掉的。只是如今的机器不像几年前了,基本上不会发生那种情况。


先来看看网上常见的错误方法:


1.android:persistent=”true”

对第三方app无效,以下是官方说明

android:persistent
Whether or not the application should remain running at all times — ”
true” if it should, and ”
false” if not. The default value is ”
false“. Applications should not normally set this flag; persistence mode is intended only for certain system applications.

 

2.onDestroy中重新启动service

service被系统杀死的时候并不一定会运行onDestroy。拿什么重新启动

 

3.android:priority

service根本没有这属性

 

4.setForeground

这个是有效的,可是网上的样例却都是无效的原因是參数错误

 

让service免于非难的办法是提高它的重要性,在官方文档中已经说明进程有五个级别,当中前台进程最重要。所以最后被杀死。

怎样使之变成前台进程能够參阅官方文档。

http://developer.android.com/guide/components/processes-and-threads.html

http://su1216.iteye.com/blog/1591699

 

这里仅仅说怎样使用setForeground将service设置为前台进程

Notification notification = new Notification();
notification.flags = Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
service.startForeground(1, notification);

上面的三个属性放到一起,值为0x62。

    /**
     * Bit to be bitwise-ored into the {@link #flags} field that should be
     * set if this notification is in reference to something that is ongoing,
     * like a phone call.  It should not be set if this notification is in
     * reference to something that happened at a particular point in time,
     * like a missed phone call.
     */
    public static final int FLAG_ONGOING_EVENT      = 0x00000002;
    /**
     * Bit to be bitwise-ored into the {@link #flags} field that should be
     * set if the notification should not be canceled when the user clicks
     * the Clear all button.
     */
    public static final int FLAG_NO_CLEAR           = 0x00000020;

    /**
     * Bit to be bitwise-ored into the {@link #flags} field that should be
     * set if this notification represents a currently running service.  This
     * will normally be set for you by {@link Service#startForeground}.
     */
    public static final int FLAG_FOREGROUND_SERVICE = 0x00000040;

最后。我们能够使用以下命令看看手机中的哪些应用这么干了,你在平时使用的时候是不是他们存活时间最长。最不easy被系统干掉

dumpsys notification

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115439.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Lamda表达式 集合的筛选

    Lamda表达式 集合的筛选   在项目中经常会遇到多个集合进行筛选,这时候如果用循环是一种方式,但是有点麻烦,在这里用Lamda表达式,就比较方便了,下面介绍几种方式:查找ListOne中与ListTwo不同的数据varexp2=ListOne.Where(a=>!ListTwo.Where(t=>a.ID==t.ID).Any()).ToList();查找ListOne中与Li…

    2022年6月4日
    51
  • hppts的实现_实现的词性

    hppts的实现_实现的词性一.安装ssl模块#yum-yinstallmod_ssl(基于rpm包安装httpd需要手动安装这个模块)二.自建CA#cd/etc/pki/CA#(umask077;opensslgenrsa-outprivate/cakey.pem2048)//生成私钥#vim../tls/openssl.cnf找到re…

    2022年10月2日
    4
  • 关于void (visit)(const ElemType &)的理解[通俗易懂]

    关于void (visit)(const ElemType &)的理解[通俗易懂]*关于void(visit)(constElemType&)的理解visit是一个函数指针,指向一个具体的函数,我们在具体使用visit时通过调用它(visit)的函数来调用它(visit)指向的函数,这个函数的形参列表为(constElemType&),看代码:template<classElemType>SeqList<ElemType&g…

    2022年5月12日
    35
  • 带通滤波器的设计[通俗易懂]

    带通滤波器的设计[通俗易懂]一、滤波器:滤波器按照频带划分可以分为:低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BEF)。其中射频天线领域主要采用带通滤波器(BPF)。二、带通滤波器(BPF):①:RFBPF:从天线中取出期望频带的有效信号,滤除不需要频带的电磁波信号和噪声。②:RFBPF:用下级混频器(降频混频器)进行频率转换时,防止在IF频带中引入干扰信号,用BP…

    2022年5月4日
    75
  • emWin 介绍_emwin教程

    emWin 介绍_emwin教程一、emWin介绍emWin是Segger公司针对嵌入式平台开发的稳定、高效的图形软件库,适合用于任何图形LCD的操作应用,并可输出高质量的无锯齿的文字和图形,通过调用emWin提供的函数接口,开发嵌入式图形界面应用变得简单而快捷。二、emwWn、ucGUI、STemWin三者之间的关系1.三者都是Segger公司的产品。2.emwWn是Segger公司图形系统的正式统称。3.uc…

    2022年10月14日
    3
  • 用js来实现那些数据结构05(栈02-栈的应用)「建议收藏」

    上一篇文章我们一起实现了栈,那么这一篇文章我们一起来用栈解决问题。看看如何用栈来解决进制转换,平衡圆括号以及汉诺塔问题,使我们对栈有更为深入的理解。1、进制转换我们先来看看十进制如何转换成二进制,

    2022年3月25日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号