androidpause
㈠ 如何判断android的activity是否运行
当前的Activity只会有一个的
首先你要知道Activity的四种状态:
Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped 状态。
Killed Activity 被系统杀死回收或者没有被启动时处于 Killed 状态。
protected void onStart() 该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用,一般执行了onStart()后就执行onResume()。
protected void onResume() 在 Activity 从 Pause 状态转换到 Active 状态时被调用。
㈡ android对应生命周期中应该释放哪些资源
onPause():
当系统调用activity中的onPause(),从技术上讲,意味着activity仍然处于部分可见的状态.但更多时候意味着用户正在离开这个activity,并马上会进入Stopped state. 通常应该在onPause()回调方法里面做以下事情:
停止动画或者是其他正在运行的操作,那些都会导致CPU的浪费. 提交在用户离开时期待保存的内容(例如邮件草稿). 释放系统资源,例如broadcast receivers, sensors (比如GPS), 或者是其他任何会影响到电量的资源。
onResume():
当用户从Paused状态恢复activity时,系统会调用onResume()方法。系统每次调用这个方法时,activity都处于前台,包括第一次创建的时候。所以,应该实现onResume()来初始化那些在onPause方法里面释放掉的组件,并执行那些activity每次进入Resumed state都需要的初始化动作 (例如开始动画与初始化那些只有在获取用户焦点时才需要的组件)
onStop():
当activity调用onStop()方法, activity不再可见,并且应该释放那些不再需要的所有资源。一旦activity停止了,系统会在需要内存空间时摧毁它的实例(和栈结构有关,通常back操作会导致前一个activity被销毁)。极端情况下,系统会直接杀死我们的app进程,并不执行activity的onDestroy()回调方法, 因此我们需要使用onStop()来释放资源,从而避免内存泄漏.
onRestart(),onStart():
当activity从Stopped状态回到前台时,它会调用onRestart().系统再调用onStart()方法,onStart()方法会在每次activity可见时都会被调用。onRestart()方法则是只在activity从stopped状态恢复时才会被调用,因此我们可以使用它来执行一些特殊的恢复(restoration)工作,请注意之前是被stopped而不是destrory。