android service常驻内存的一点思考

标签: android service 内存 | 发表时间:2015-04-26 01:36 | 作者:shcalm
出处:http://blog.csdn.net

我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它.

我分别在android4.3和android5.0上面测试了LBE的清理内存功能,看看是不是会达到不被清理的目的,发现在这两个版本上还是有一些区别的

先说一下我们的代码,我们的service在单独的进程中,在service中调用JNI的代码,然后fork出一个进程,然后让我们的service进程和fork出来的子进程一直运行.

看清理之后的状态

  1. android4.4上面,JNI fork出来的进程没有被杀死,可以把被杀死的service进程重启
  2. android5.0上面还有效么?清理内存操作之后,可以看到fork出来的进程也会被杀死..看来这种方法已经失效了..

为什么5.0上面就不行了呢,咱们看一下activitymanagerservice,LBE的清理内存应该调用的killBackgroundProcesses,看看他们有什么区别

5.0的代码

                  Process.killProcessQuiet(app.pid);
                Process.killProcessGroup(app.info.uid, app.pid);

4.3的代码

                   Process.killProcessQuiet(pid);

5.0的代码增加了killprocessgroup..

看来fork进程的方式来让android服务常驻内存的方式在5.0上面不管用了…

作者:shcalm 发表于2015/4/25 17:36:55 原文链接
阅读:36 评论:0 查看评论

相关 [android service 内存] 推荐:

Android Service 详解

- - CSDN博客移动开发推荐文章
一个Service也是一种应用程序组件,它运行在后台以提供某种服务,通常不具有可见的用户界面. 其它的应用程序组件可以启动一个Service,即使在用户切换到另外一个应用程序后,这个Service还是一直会在后台运行. 此外,一个应用程序也可以绑定到一个Service然后使用进程间通信(IPC)方式与Service之间发生交互.

android service常驻内存的一点思考

- - CSDN博客推荐文章
我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它.. 我分别在android4.3和android5.0上面测试了LBE的清理内存功能,看看是不是会达到不被清理的目的,发现在这两个版本上还是有一些区别的.

Android学习之路——7.Service

- - ITeye博客
这两天又学习了Android四大组件之一的Service. (1)Service不是一个单独的Process,除非特别指派了,也不是一个Thread,但也不是运行在Main Thread中. (3)Service的生命周期:. 调用的Context.startService()   oncreate() --> onStartCommand ()--> Service is running --> The service is stopped by its or a client--> onDestroy() --> Service is shut down .

Android Activity与Service通信

- - CSDN博客移动开发推荐文章
一、当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现.      当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用. 比如你后台有一个播放背景音乐的Service,这时就可以用这种方式来进行通信.

Android开发——关于Service的一些要点

- - CSDN博客推荐文章
service 有两种调用形式:被启动(startService)和被绑定(bindService). 前者要求在Service类中实现onStartCommand方法,Service启动后需要手动停止,否则永远运行下去;后者要求实现onBind方法,当没有组件绑定到此Service时,它自行了断.

Android Service的使用方法 音乐播放器实例

- - ITeye博客
Service翻译成中文是服务,熟悉Windows 系统的同学一定知道很熟悉了. Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行,避免被用户误关闭. 因为Android在某些情况下会自动关闭非前台显示的Activity,所以如果要让一个功能在后台一直执行,不被Android系统关闭,比如说闹钟、后台播放音乐,就必须使用Service.

Android Service与Activity之间通信的几种方式

- - CSDN博客移动开发推荐文章
转载请注明地址 http://blog.csdn.net/xiaanming/article/details/9750689. 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢.

Android的Service中弹出窗口解决方法

- - 移动开发 - ITeye博客
转于:http://www.cnblogs.com/fbsk/archive/2011/12/28/2304523.html. 我们在使用Service时,经常会碰到这样的情况,比如用一个service做下载.此时service不一定在最前端,有可能是其它的Activity. 当下载完成时,如何能弹出对话框,让弹出框在当前activity之上.

Android开发之浅谈Service的基本概况和常见问题

- - CSDN博客移动开发推荐文章
    Service(服务)是一个应用程序组件,可以在后台执行长时间运行的操作,不提供用户界面. 其他应用程序组件可以启动一个Serivce,它将继续在后台运行,即使用户切换到另一个应用程序. 此外,一个组件可以绑定到一个服务与它交互,甚至执行进程间通信(IPC). 例如,一个Serivice可能处理网络交易,播放音乐,执行文件I / O,或与一个内容提供者交互,所有的背景.

Web Service入门

- - 博客 - 伯乐在线
本文来自文章作者 @Jeremy黄国华 的投稿. 伯乐在线也欢迎其他朋友投稿,投稿时记得留下您的新浪微博账号哦~. 目前对Web Service没有统一的定义,定义一:Web Service是自包含的、模块化的应用程序,它可以在Web中被描述、发布、查找以及调用. 定义二:Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼任的组件进行操作.