关于Google 教程中 Manage the Activity Lifecycle 示例的学习

Google 关于管理Activity生命周期的示例

昨天晚上我看了Google training里面Manage the Activity Lifecycle这一节,看了以后学到很多以前看书,看视频都没有了解过的东西,Google关于如何恰当地使用这些方法来是我们的APP运行流畅,符合用户的预期给出了很好的指导意见,比如Pause()里面释放不需要的系统资源,停止UI动画等消耗内存的东西,不要进行密集CPU操作以影响Activity的过渡等等,还有SaveInstanceStates()作用及用法的详细讲解。。。。反正好多好多了。

于是,我就忍不住下载了官方示例,看看Google的实例APP是怎么样的。在Studio里面运行一看,果然不一样。一般的教程都是给你看看Log就好了吧,而且只运行一个Activity,让你看看单个Activity的变化是怎么样的。瞬间差距就出来了。。。。。Google的示例不仅仅将Activity的数量范围变大到3个,还用图形化的方式更直观的给我们展示了Activity生命周期的变化过程。

有图为证:
Activity A

Activity B

DIALOG Activity

看着确实是厉害了很多呢,如果只是从图形化的角度去看看Activity的生命周期在各种情况下的变化,学习Activity生命周期的目的应该达到了,但我很好奇他是怎么做出来,因为我是Android新手,所以就看了看源码,下面是我从源码里面的学到东西的摘要。

如果大家对这个示例也感兴趣,可以点击这里进行示例的下载.


第一个问题:

  • 如何在多个Activity切换的时候,追踪Activity的状态变化信息,然后显示出来?

第一个回答:

  • 首先在每个Activity使用一样的布局,然后定义一个工具类A来存贮所有Activity变化的状态信息,所有的Activity共用一个静态工具类A变量,这保证了状态信息的共享。然后定义一个工具类B,分别在每个Activity的不同状态打印信息。

好了,让我们先看一下工具类A的代码吧。

public class StatusTracker {
   
  private Map<String, String> mStatusMap;
  private List<String> mMethodList;
  private static StatusTracker ourInstance = new StatusTracker();
  private static final String STATUS_SUFFIX = "ed";

  public static StatusTracker getInstance() {
    return ourInstance;
  }

  private StatusTracker() {
    mStatusMap = new LinkedHashMap<String, String>();
    mMethodList = new ArrayList<String>();
  }

  public List<String> getMethodList() {
    return mMethodList;
  }

  public void clear() {
    mMethodList.clear();
    mStatusMap.clear();
  }

  /**
   * Adds the status value for the given activityName into the Map.
   *
   * @param activityName
   * @param status
   */
  public void setStatus(String activityName, String status) {
    mMethodList.add(activityName + "." + status + "()");
    if (mStatusMap.containsKey(activityName)) mStatusMap.remove(activityName);
    mStatusMap.put(activityName, status);
  }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值