作为一名android开发人员,如果不了解android应用程序的应用程序生命周期或对其不具有深入的了解,则很有可能该应用程序将不会具有良好的用户体验。对应用程序生命周期没有适当的了解不会影响该应用程序的工作,但是会导致不良的用户体验。让我们举一个例子,其中用户正在使用该应用程序,这会消耗大量电池,而另一方面,又有一个相同的应用程序提供了以前的应用程序提供的相同功能,那么用户很有可能会将转移到更高版本的应用程序,并且不会使用先前的应用程序。该应用消耗了大量电池电量,这可能表明该应用的android开发人员对应用程序的生命周期没有足够的了解。
这是一个重要主题,并且必须具有对android和应用程序生命周期中的进程以及不同进程如何影响应用程序状态的适当知识。还必须具备Android应用程序生命周期的知识,因为如果没有足够的专业知识很多次,则该过程可能会崩溃,而同时做一些重要的工作,最终将导致该应用程序对用户的不良印象。应用程序进程的生命周期不仅由应用程序本身控制,而且应用程序的进程生存期还取决于各种因素,例如应用程序占用的内存,系统中可用的内存,从以下角度来看,该进程的重要性如何?用户,因为该用户未使用该应用程序已有多长时间了。
了解流程和应用程序生命周期的重要性
了解应用程序生命周期是必要的,因为这不会影响应用程序的工作,但会影响用户体验。假设用户有两个选择,其中用户可以选择从两个应用程序中选择一个,其中两个应用程序提供相同的功能,并且涉及相同的任务类型,但是一个应用程序比另一个应用程序消耗更多的电池电量,因此,可以肯定的是,用户会选择消耗更少电池的应用程序。因此,开发人员需要了解该应用程序在不使用时没有占用资源和服务,因为这可能导致更多的电池使用量。因此,开发人员应处理android应用程序的每个应用程序状态,并应在应用程序处于后台状态时释放资源。
LRU缓存在优化Android应用程序中的作用
众所周知,特定的android设备具有有限的存储容量和处理速度,但是由于用户设备上运行的应用程序太多,因此android操作系统正确管理资源以使所有资源都不会变为挑战。资源短缺。因此,Android操作系统会将使用最少的应用程序推送到称为LRU(最近最少使用)缓存的缓存中,如果该应用程序已长时间没有使用,它将被推送到LRU的队列中,并存在于队列的最前面。如果应用程序在不久的将来投入使用,它将在队列的后面,如果应用程序是最近使用的,它将在队列的后面。例如,如果用户很长一段时间没有使用Facebook,则Facebook应用程序将出现在队列的最前面;如果假设用户最近使用过WhatsApp,则它将出现在队列的后面。 LRU缓存队列。 LRU缓存队列可以用以下方式表示:
Android应用程序中进程的优先级
为了确定应该杀死哪个进程以进行适当的内存和电池管理,Android操作系统会维护一个层次结构,在该层次结构中,所有进程均按其优先级顺序放置。优先级较低的是当系统要释放一些资源时可以首先终止的进程。 Android使用一组规则和规章根据应用程序的运行状态来决定进程的优先级。以下是进程在Android应用程序中随时可能具有的进程状态。这些过程的优先级从上到下依次列出。
1.前景处理
前台进程是用户当前正在与之交互并使用它的进程。如果满足以下任一条件,则认为该进程处于前台状态:
- 如果流程正在运行与用户进行交互的活动
- 如果它具有当前正在执行的广播接收器以接收任何系统更新。
示例:假设用户正在使用Whatsapp,那么可以说Whatsapp应用处于前台状态。此过程具有最高优先级,并且只有在内存太低以至于该进程无法继续执行时,它们才能被系统杀死。
2.可见的过程
可见过程是活动对用户可见的过程。用户不会直接与此流程进行交互,因为与该流程相对应的活动将被另一个活动部分覆盖,并且该流程将处于onPause()生命周期状态。除非系统中内存不足以致无法执行这些进程,否则无法终止该进程。终止这些过程将对用户体验产生负面影响,因为用户可以看到与此过程相对应的活动。仅当这些进程保持活动状态时,这些进程才会被杀死,从而使前台进程无法继续执行它们。
示例:当某些应用程序需要权限(例如摄像机访问权限,存储访问权限等)时,将出现提示或对话框,并询问所需的权限。因此,此时,与先前正在运行的应用程序的活动相对应的过程将进入可见状态。
3.服务流程
如果某个进程处于运行状态,并且既不是前台进程也不是可见进程,则称该进程为服务进程。这些过程对应用程序用户不直接可见。此过程对于执行后台任务(例如后台网络数据上载或下载)的应用程序很有帮助。系统将使服务进程保持活动状态,直到系统无法使前台进程和可见进程运行为止。
示例:从桌面上在Whatsapp上上传PDF是在后台完成的服务过程。
4.后台程序
系统调用Android的onStop()生命周期方法的背景状态。假设用户正在使用一个应用程序并突然按下主页按钮,因此由于此操作,该过程从前台状态变为后台状态。当应用程序从前台状态变为后台状态时,它将进入LRU缓存队列,并将其放置在队列的前面。当用户返回到该应用程序时,该过程将从后台状态返回到前台状态。因此,对于android开发人员来说,必须具备android中的流程和应用程序生命周期以及流程如何确定应用程序生命周期时间的知识,这才能带来良好的用户体验。
使用相同类型的应用程序时手机的电池使用情况
从上图可以说,提供相同类型服务的应用程序将导致几乎相同数量的电池消耗。 (请考虑应用程序的使用时间是否相等)从上图可以看出,当Youtube和Google会面时都是Video Streaming,Linkedin和Whatsapp都是同一种消息传递应用程序,尽管有点不同,但是这些应用程序使用相同类型的数据传输和服务,因此消耗相同数量的电池。