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/

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 阿里云polardb_阿里云用的什么数据库

    阿里云polardb_阿里云用的什么数据库前言一年一度的数据库领域顶级会议VLDB2019于美国当地时间8月26日-8月30日在洛杉矶召开。在本届大会上,阿里云数据库产品团队多篇论文入选ResearchTrack和IndustrialTrack。本文将对入围IndustrialTrack的论文《AnalyticDB:RealtimeOLAPDatabaseSystematAlibabaCloud》进行深度…

  • ActionBar 背景色修改

    ActionBar 背景色修改

  • null toarray php,解决Laravel5.5下的toArray问题

    null toarray php,解决Laravel5.5下的toArray问题作为一个有轻度强迫症且受ThinkPHP影响较深的PHP码农,总觉得Laravel5.5的DB::xxoo->get()->toArray()之后竟然还没得到我想要的ThinkPHP中的select()出来的数组,于是决定做一下修改。PS:出于尽量不影响原有框架的考虑,我是新建了一个方法叫getList来暂代toArray那不知所谓的返回结果,在没有找到更好的解决办法之前,暂时这么用着…

  • 调和数列举例_数列专项训练

    调和数列举例_数列专项训练算法训练调和数列问题时间限制:1.0s内存限制:512.0MB时间限制:1.0s内存限制:512.0MB问题描述输入一个实数x,求最小的n使得,1/2+1/3+1/4+…+1/(n+

  • 警惕钓鱼网站_进入钓鱼网站会怎样

    警惕钓鱼网站_进入钓鱼网站会怎样概述于今日某伙计,突然在大群里发布了一条大家感兴趣的通知,具体讲是一个在线的腾讯文档,如下图

  • 快速手工实现软件著作权源码60页制作

    快速手工实现软件著作权源码60页制作软件著作权源码基本要求:(1)前30页,后30页,一共60页。其实前30页还好说,什么叫后30页?实际代码没有绝对的后;(2)每页至少60行,无空行,有一定的注释。快速插入代码先按顺序准备好代码,”插入”-“对象”-“文件中文字”,可快速插入所有代码。每页至少60行首先得知道每页多少行,可通过”页面设置”-“版式”-“行号”,显示出行号:效果如下:设…

发表回复

您的电子邮箱地址不会被公开。

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