暂停和重启一个Activity
在通常的app使用过程中,前台运行的Activity在某些时候会被其它的可视化组件阻塞导致这个Activity暂停。例如,当某个半透明的Activity打开(比如某种对话框),则之前那个Activity就会被暂停。只要这个Activity仍然是部分可见的,但是当前不是获得焦点的,它就一直保持paused状态。
但是,一旦这个Activity完全被阻塞并且不可见,它就停止了(这个将在下一课中讨论)。
当你的Activity进入暂停状态,系统就在你的Activity上调用onStop()方法,这允许你停止一些正在进行的动作,这些动作在暂停的时候不应该继续(例如播放视频)或者持久化任何信息,这些信息在用户继续离开app时应该永久保存的。如果用户在暂停的状态下重新回到你的Activity,系统会重新启动它并调用onResume()方法。
注意:当你的Activity收到一个onPause()调用,这可能表示你的Activity将会暂停一段时间然后用户可能会重新回来关注你的Activity。然而,这通常是第一个指示,用户正在离开你的Activity。
暂停你的Activity
当系统为你的Activity调用onPause()方法时,它技术上的意思是你的Activity仍然是部分可见的,但是它更通常是用户正在离开你的Activity并且马上就要进入停止状态的暗示。你通常应该使用onPause()回调来做如下动作:
- 停止动画或其他正在进行的会消耗CPU的动作
- 提交没有保存的配置,但只是那些用户期望在他们离开时被永久保存的变更(比如电子邮件的草稿)
- 当你的activity被暂停时,释放系统资源,例如广播接收者(broadcast receiver)、传感器的处理(比如GPS),或者其他任何有可能影响电池使用寿命的资源,用户并不需要它们。
例如,你的应用程序使用了摄像头,onPause()方法是一个好地方来释放它。
@Override public void onPause() { super.onPause(); // Always call the superclass method first // Release the Camera because we don't need it when paused // and other activities might need to use it. if (mCamera != null) { mCamera.release() mCamera = null; } }
通常,你不应该用onPause()方法来存储用户变更(比如个人信息存储到表格中)到永久性存储介质中。你唯一的应该在onPause()方法中保存用户变更到永久性存储介质中的时机是用户期望这些变更被自动保存的(比如起草一封电子邮件的时候)。然而,你应该避免在onPause()期间执行CPU密集型工作,比如写数据库,因为这会减慢视图切换到下一个Activity的速度(作为代替,你应该在onStop()期间执行重负载的关闭工作)。你应该保持在onPause()方法期间完成的操作量相对简单,允许快速切换到用户的下一个目标Activity,如果你的Activity实际正在被停止的话。
注意:当你的Activity暂停的时候,Activity实例可以保存在内存中,当Activity重新启动后被唤回。你不需要重新初始化那些在Resumed状态之前其他回调函数期间创建的组件。
重新启动你的Activity
当用户从暂停状态重新启动你的Activity,系统调用onResume()方法。
要知道每次你的Activity来到前台的时候系统都会调用这个方法,包括当它第一次被创建时。同样的,你应该实现onResume()方法来初始化那些在onPause()方法中释放的组件,并且执行一些其他初始化,那些每次Activity进入Resumed状态都需要做的(比如开始动画和初始化那些只在Activity获得用户关注时使用的组件)。
下面的onResume()的例子是和上面的onPause()例子是配对的,因此它初始化在暂停时被释放的摄像头。
@Override public void onResume() { super.onResume(); // Always call the superclass method first // Get the Camera instance as the activity achieves full user focus if (mCamera == null) { initializeCamera(); // Local method to handle camera init } }
相关推荐
android生命周期管理:重启或停止一个Activity
代码主要实现从一个Activity跳转到另外一个Activity
android生命周期管理:暂停和恢复Activity
这是一个关于从一个activity跳到fragment,再从fragment跳到activity的页面之间的跳转!!!
service在后台下载,与前台多个activity通信,结果发现有一个坑,找到原因后,跟大家一起分享。
实现在同一个activity中通过一个按钮切换两个不同的布局,此处的按钮并非同一个按钮控件,而是在两个不同的布局文件中点击按钮实现布局的切换。参考博客:http://blog.csdn.net/u010963246/article/details/47324229
在应用程序正常时,当前的Activity有时会因为其他可视化组件阻塞(obstructed)而导致Activity暂停。例如,当打开一个半透明(semi-transparent)的活动(比如,对话框),先前的Activity就会暂停。
博客里面的例子程序,见地址http://blog.csdn.net/jason0539/article/details/18075293
安卓一键换肤,不重启activity,无侵入性,只需配置xml [注意:本资源来自网络,如有侵权,请联系我删除,谢谢。]
该资源包含了一个activity访问另一个应用的acitvity的简单实现,简单易懂,喜欢的下载!
09-01 rxbus从第二个activity发送消息给第一个activity,并后台更新第一个activity的UI
09-02 eventbus3.0从第二个activity发送消息给第一个activity,并后台更新第一个activity的UI
LocalActivityManager类是管理activity的,然后通过startActivity(String id, Intent intent)这个方法获取Window获取当前Window对象,再然后调用getDecorView()方法获取当前activity对应的view,这样就可以使用...
另一种不重启Activity 切换Android夜间模式的库
Demo结构 fragment_first.xml fragment_second.xml fragment_main.xml 效果图: 原创文章 2获赞 1访问量 119 关注 私信 展开阅读全文 作者:河边啃母鸡
activity更新另一个activityUI方法——广播
深入底层剖析,一个activity中多个handler和消息的处理过程,
Activity之间的数据传递 简单功能的实现 对新手有所帮助
关于一个activity实现多页面的跳转的框架,很好用的。
demo教你如何实现同一个activity加载不同的fragment 同时实现activity和fragment之间的数据交换 实现在fragment上画图 画二维码 画圆等等