Android进程相关资料

来源:互联网 发布:mysql增加表空间大小 编辑:程序博客网 时间:2024/05/22 08:20

前言:记录android进程相关的一些资料,学习的朋友可以参考。

android中进程的分级:
1.前台进程:如ireader程序就是前台就是前台进程,这些进程是不会被系统优先结束的,当我们把它切到后台时,那么它就变成了后台进程
2.可见进程:如输入法等程序,一般这些程序的显示界面都是隐藏起来的,但当我们开始输入文字时,它很快就会弹出来
3.主要服务:如电话、短信等,这些主要服务平时也不会被系统自动结束的,除非你自己关闭它,但是关闭了之后它自己也会重新加载的。这就是我们有时在释放内存以后,过一会内存显示的可用值又慢慢
降低的原因
4.次要服务:如一些软件的插件等,由于它们和一些系统功能相关,所以系统也不会自动去终止它们,终止了也会自动加载
5.后台进程:当内存极度不够的时候,后台进程会被杀死
6.内容供应节点:没有程序实体,仅提供内容给别的程序使用,如邮件供应节点等,在系统自动终止进程时,内容供应节点程序享有优先被杀死的权利
7.空进程:没有任何东西在内运行的进程,有些程序在退出后,依然会在进程中主流一个空进程,这个进程里没有任何数据的运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息,这部分程序无疑是系统最先终止的的

结束除主要服务、次要服务,之外的所有进程,达到内存释放的效果
1、killProcess(int pid)
android.os.Process.killProcess(android.os.Process.myPid());
2、System.exit(int code)
System.exit(0);
3、void killBackgroundProcesses(String packageName)

补充:
Process.killProcess 最终是调用 linux API kill() 发送 SIGKILL 信号。了解 Linux 编程的都知道,进行收到这个信息都会立即结束进程,Android 下不同的是 ActivityManager 一直监听者进程状态。如果发现进程被kill,会立即重启进行,并重启之前状态对应的Activity、Service、ContentProvider等。这就是为什么我们调用Process.killProcess后,发现程序是重启了,而不是被kill了。

Android关于进程、线程等相关小结:
在大部分的时间里,一个Android进程中仅运行一个线程,我们成为主线程。主线程位于一个循环中并处理每条消息。
一个Android进程有4哥哥主要组件:Activity、Service、contentProvider、BroadcastReceiver
在清单文件中对应的标签节点是(使用相同的线程处理):、、、

外部程序调用contentProvider或Service时,线程池会为该调用分配一个线程。。。

多进程:
使用android:process属性可以为该组件指定进程(系统在启动这个组件的时,会先创建(如果还没创建的话)这个进程,然后再创建该组件)
好处:分担主进程内存压力、可以做守护进程
坏处:占用系统空间,容易造成机器卡顿,耗电量大

以上就是全部内容,大家可以自个去试试,喜欢的朋友可以加个关注,以后有好的文章可以及时查阅讨论,有什么问题也可以留言,或者在微信公众号“技术帮团队”上找我们。

0 0
原创粉丝点击