android中进程和线程的概述

本文深入探讨了Android应用中进程与线程的管理与优化策略,详细解释了进程的五级分类及其对内存管理的影响,同时强调了避免在UI线程中进行耗时操作的重要性。此外,文章还介绍了工作线程与UI线程之间的通讯方式,旨在帮助开发者构建高效、稳定的Android应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:进程

在默认的情况下所有的应用的组件都是运行在同一个进程中的,当然在某种特别耗时的动作中也可以指定新的进程。
指定新进程可以通过android:process属性
<activity
            ...
            android:process=""
           	...>
        </activity>
        <service
            ...
            android:process=""
           	...>
        </service>
        <receiver
            ...
            android:process=""
           	...>
        </receiver>

在系统资源不足时会根据进程级别的不同kill掉线程,下面介绍一下进程的级别:

1.      前端进程(foreground process):一个当前正在被操作的进程

*一个activity用户正在交互(在调用onResume方法后)

*service绑定在一个用户正在交互的activity

*service正在运行在前端,服务调用了startForeground()。

*service正在执行一个生命周期(onCreate(),onStart(),onDestroy())

*broadcast Receiver执行onRecive()方法。

一般,只有一个几个前台的工作。他们被杀死只能作为最后的手段,假如内存低到他们不能继续运行。一般设备已经达到了内存分页状态,以至于去杀掉前端的进程保持用户界面响应。

2.      可见进程(visible process):一个进程没有任何的前端组件,但是他仍然影响用户看到的

*一个activity不是在前端,但是仍然可见,当这个时候,举个例子假如前端开启一个dialog,activity就会在背后。

*一个service绑定一个可见的activity。

一个可见的进程可以认为非常的重要并且不会被杀死保证全部前端进程正在运行时。

3.      服务进程(service process):一个正在运行的service

一个进程是一个服务被startService()方法启动并且不在两个更高的类。虽然服务进程不是直接的被用户看到,他们会做一下事用户会感觉到(比如播放音乐在后台或者从网络中下载数据),所以系统需要保持运行除非他们没有足够的内存当前端和可见进程。

4.      后台进程(background process):一个不可见的activity

一个进程持有一个activity当前不可见对用于(onStop方法之后),这些进程会不影响用户的体验。通常这些许多后台进程运行,他们会保持一个LRU队列来确定一个activity最少最近时候的被杀掉。假如一个activity实现了生命周期方法保存当前的状态杀掉进程后不会影响用户体验,因为当用户返回activity时activity已经存储了可见的状态。

5.      空进程(empty process):没有任何组件的进程

一个进程不激活任何一个应用的组件。这个唯一的理由保证这个进程活着是为了缓存目的,提高启动时间在下次运行的时候。这个系统会进程杀死这些进程为平衡这个系统的资源在进程缓存和内涵缓存。



二:线程

一个应用启动是运行在一个process的一个main线程中,该线程被称为UI线程或者主线程。
在操作UI线程时要注意:
1.不要在UI线程中做耗时的操作,这样会引起anr异常。
2.不要在UI线程以为的工作线程来刷新UI,否则也会报错。

除了UI线程,其他new Thread()出来的线程被称为工作线程。

工作线程和UI线程通讯可以使用以下几种方式:

1.      Activity.runOnUiThread(Runable);

2.      View.post(Runable)

3.      View.post(Runable,long)

4.      通过Handler和Message的方式






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值