activity的生命周期管理。
来源:互联网 发布:淘宝低价包邮怎么赚钱 编辑:程序博客网 时间:2024/04/30 09:44
public static boolean isTopActivity(Context ctx) {ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);if (tasksInfo.size() > 0) {if (ctx.getPackageName().equals(tasksInfo.get(0).topActivity.getPackageName())) {return true;}}return false;}public String getTopActivity(Context ctx) {ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1);if (tasksInfo.size() > 0) {return ctx.getPackageName();}return "";}
4.0前版本判断是否前台和获取正在运行activity的方法,
android4.0出了这样一个api.
private class ActivityLifecycleCallbacksImpl implements ActivityLifecycleCallbacks { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { // TODO Auto-generated method stub /*activity.finish();*/ if(activity.getClass().getName().equals("com.example.testactivitymanager.MainActivity")) { Intent i = new Intent(); i.setClass(activity, SecondActivity.class); activity.startActivity(i); activity.finish(); } Log.e("TestActivitymanager", "onCreate," + activity.getClass().getName()); } @Override public void onActivityStarted(Activity activity) { // TODO Auto-generated method stub } @Override public void onActivityResumed(Activity activity) { // TODO Auto-generated method stub } @Override public void onActivityPaused(Activity activity) { // TODO Auto-generated method stub } @Override public void onActivityStopped(Activity activity) { // TODO Auto-generated method stub } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { // TODO Auto-generated method stub } @Override public void onActivityDestroyed(Activity activity) { // TODO Auto-generated method stub } }
他是一个接口,可以让我们的application直接检测到我们项目里每个activity的状态变化。
public void onCreate() { // TODO Auto-generated method stub super.onCreate(); callBackImpl = new ActivityLifecycleCallbacksImpl(); this.registerActivityLifecycleCallbacks(callBackImpl); mApp = this; }
用法如上,我们来看Application里的源码
public void registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) { synchronized (mActivityLifecycleCallbacks) { mActivityLifecycleCallbacks.add(callback); } }放到 arraylist里,然后有个方法遍历回调
void dispatchActivityCreated(Activity activity, Bundle savedInstanceState) { Object[] callbacks = collectActivityLifecycleCallbacks(); if (callbacks != null) { for (int i=0; i<callbacks.length; i++) { ((ActivityLifecycleCallbacks)callbacks[i]).onActivityCreated(activity, savedInstanceState); } } }
这个方法,会在Activity源码的onCreate里调用.4.0下。
getApplication().dispatchActivityCreated(this, savedInstanceState);
我们通过这个接口还能获取到当前正在桌面运行的activity.判断当前APP是否运行在前台,做一个管理器public void addActivity(FragmentActivity activity) {if (activity != null) {activityList.add(activity);}}public void removeActivity(Activity activity) {if (activity != null) {activityList.remove(activity);}}public void finishActivity(String className) {for (Activity activity : activityList) {if (activity.getClass().getName().equals(className)) {removeActivity(activity);activity.finish();// 会执行destroy方法,而此方法中有removeActivity(activity)的方法}}}其中activity可以定义成
private static ConcurrentLinkedQueue<FragmentActivity> activityList = new ConcurrentLinkedQueue<FragmentActivity>();除了用上述方法,我们还可以在我们的baseActivity(每个项目至少应该有这个吧)里的create方法add, 返回方法里来调用finish.贴一个launchback方法。
public void launchBack() {super.launchBack();overridePendingTransition(R.anim.activity_left_in, R.anim.activity_right_in);if (MyApplication.getInstance().isExistActivity(MainActivity.class.getName())) {stopProgressDialog();String clzName = getClass().getName();MyApplication.getInstance().finishActivity(clzName);} else {launchMain();}};
0 0
- 管理Activity的生命周期
- 管理Activity的生命周期
- Activity的生命周期管理
- 管理Activity的生命周期
- 管理Activity的生命周期
- 管理activity的生命周期
- activity的生命周期管理。
- 管理Activity的生命周期
- 管理Activity的生命周期
- 4.0 Activity的生命周期管理
- 关于Activity生命周期的管理
- Training--管理activity的生命周期
- 管理Activity的生命周期(1)
- Android Activity---管理Activity的生命周期
- Android Activity---管理Activity的生命周期
- Android Training - Activity生命周期的管理
- 【Android开发】管理Activity的生命周期(1)
- Activity生命周期的管理(序)
- squirrel-sql通过phoenix-4.7.0连接windows中的hbase-1.1.3(三)
- 开源虚拟化管理平台Ovirt简介和配置环境搭建 http://xiaoli110.blog.51cto.com/1724/784874
- linux下mysql忘记密码
- Matlab中plot函数全功能解析
- CentOS安装配置JDK-7
- activity的生命周期管理。
- 判断一个数是否是2的整数次幂
- java 继承与多态练习题目
- runtime的使用
- 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程
- Android之Fragment(三):动态替换碎片
- 静态方法何时使用
- 违法、色情、敏感信息过滤服务。。尝试了下 Rabbit
- Swift和OC,是编译型语言、解释性语言、运行时语言?