`
su1216
  • 浏览: 671156 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71932
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128788
社区版块
存档分类
最新评论

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;
 
最后,我们可以使用下面命令看看手机中的哪些应用这么干了,你在平时使用的时候是不是他们存活时间最长,最不容易被系统干掉
dumpsys notification

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

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

1
0
分享到:
评论

相关推荐

    【Android studio】service在app直接退出下,整体输出情况,实现开机自启动,一直后台运行

    同时,可以使用第三方库如ACRA(Android Crash Report)来收集和分析崩溃报告。 3. 拉起机制:当检测到应用被杀死或卡死时,可以通过发送Broadcast或使用AlarmManager来唤醒应用或重新启动Service。 总结,要在...

    Android图片上传队列Service

    这个方法通常涉及HTTP请求,使用`HttpURLConnection`或第三方库如OkHttp,通过POST请求将图片文件作为请求体发送。同时,需要处理上传过程中的错误,如超时、网络中断等,确保上传的可靠性。 6. **异步处理**:为了...

    Android-DayPlan时间管理APP

    此外,DayPlan还可能集成了一些第三方库,如Retrofit进行网络请求,Gson进行JSON数据解析,以及ButterKnife进行视图绑定,这些都极大地简化了开发过程,提高了代码的可读性和可维护性。 总的来说,DayPlan是一款...

    使用Android Studio开发的基于java实现的计算器APP

    14. **发布流程**:完成开发后,应用需要打包成APK并签名,然后可以通过Google Play或其他第三方应用市场发布。 综上所述,"CalculatorXingFeifei"项目涵盖了Android应用开发的核心概念和技术,包括Android Studio...

    android7.0活动通知

    应用可以通过实现Notification Listener Service,监听并响应其他应用发出的通知,这为第三方应用提供了更多可能性,比如通知管理工具。 总之,Android 7.0的活动通知极大地增强了通知系统的功能和灵活性,不仅...

    Android手机管家源码.rar

    源码会包含对Android的权限系统(如PermissionGroup和Permission)的深入理解和利用,以及对第三方应用权限的检查和控制。 七、网络管理 网络管理功能可能包括流量监控、Wi-Fi管理等。源码中会使用...

    新版Android开发教程.rar

    � 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...

    android api demo讲解

    - 使用第三方库实现模糊效果。 - 调整模糊程度和范围。 ##### (18) App->Activity->Wallpaper - **目的**:演示如何在Activity中预览壁纸效果。 - **主要内容**: - 使用WallpaperManager获取壁纸图片。 - 在...

    Android经典代码例子

    3. **网络连接**:Android使用`HttpURLConnection`或第三方库如`Volley`、`OkHttp`进行网络请求。`AsyncTask`常用于异步加载数据,但现代做法推荐使用`Retrofit`或`Kotlin Coroutines`。 4. **显示图片**:管理图片...

    Android 激光推送客户端demo-IT计算机-毕业设计.zip

    在这个项目中,开发者可能自定义了一套推送机制,或者使用了如Firebase Cloud Messaging (FCM)、极光推送(Apptimo)等第三方推送服务。 在这个源码Demo中,我们可以期待学习以下关键知识点: 1. **Android应用架构*...

    MQTT 安卓客户端实现

    在Android Studio中,通常使用第三方库来简化MQTT客户端的实现,例如Paho MQTT Java Client。以下是关键步骤: 1. **添加依赖**:在`build.gradle`文件中添加Paho MQTT Java Client依赖,同步项目。 2. **初始化...

    Demo-App:演示可以帮助我们了解其工作原理的每种android技术

    10. **第三方库集成**:如Glide、Picasso用于图片加载,ButterKnife、Dagger2进行依赖注入,RxBinding处理事件响应等。 在"Demo-App-main"这个文件名中,"main"通常代表项目的主分支或主要代码库,暗示我们将找到...

    Android-GTPushDemo个推推送的demo以及点击通知后的处理

    在Android应用开发中,个推(GeTui)是一种常见的第三方推送服务,它为企业和开发者提供了稳定、高效的消息推送功能。本示例“Android-GTPushDemo”是关于如何集成和使用个推推送服务的一个详细实例,特别是关注用户...

    消息系统设计V1.11

    定义消息的来源(如业务系统、API接口)和目的地(如用户设备、第三方服务)。数据库设计应支持高效的消息存储和检索。 11. **消息接收中心**: 包括Web、App、邮箱和其他接收中心,它们分别处理对应渠道的消息。...

    Laravel开发-firebasecloudmessaging

    为了在Laravel中使用FCM,你需要安装第三方包,如`fcm-notification`。可以通过Composer来安装: ```bash composer require fcm/fcm-notification ``` ### 3. 设置配置 在`config/services.php`中添加新的配置项...

    高可用的移动消息推送平台方案.docx

    - **第三方推送服务**:如个推、极光推送等服务商提供的解决方案。这类服务具有开发成本低、消息到达率高的特点,成为大多数应用的首选。 - **自建推送服务**:对于安全性要求较高的应用,可能选择自建推送服务。...

    Laravel开发-laravel-push-notification .zip.zip

    在Laravel中实现这一功能,我们可以利用第三方服务,如Firebase Cloud Messaging (FCM) 或者Apple Push Notification service (APNs) 对于iOS设备。 要开始在Laravel项目中集成推送通知,你需要安装相关的包。一个...

Global site tag (gtag.js) - Google Analytics