美文网首页
电话应用热启动用户体验优化

电话应用热启动用户体验优化

作者: SevChen | 来源:发表于2017-06-02 08:23 被阅读11次

    <h2 align = "center">电话应用热启动用户体验优化</h2>


    热启动定义:在最底层Activity,点击返回按钮;Activity消失后,点击桌面图标或者从最近任务中打开,应用MainActivity重新启动,这次启动属于热启动。

    点击返回按钮,默认会触发Activity的finish操作,但是不会杀掉进程。所以应用热启动时间,可以认为是创建第一个Activity的时间。加快MainActivity的创建和显示,就是热启动优化的核心。

    1. 对比其他厂商样机和第三方App

    1. 其他样机,如小米、魅族,在电话应用的最底层Activity,点击返回按钮,没有触发Activity的finish。
    1. 第三方App,如微信、QQ,在应用首Activity,点击返回按钮,也没有触发Activity的finish。
    1. 可以推测,上述应用,都对Back键的逻辑进行了改写,按Back键和Home的逻辑差不多,仅仅是将应用切换到后台,并不会销毁Activity。

    2. 电话应用使用上述办法优化热启动前后对比

    将电话最底层Activity的返回按钮逻辑,修改成和home一样时的内存变化如下。

    1) 修改前

    按Back退出应用

    点击桌面图标启动应用

    2) 修改后

    按Back退出应用

    点击桌面图标启动应用

    从上述现象可以得出:电话的主界面Activity锁占据的内存不大,大概1~2M左右。修改后,点击back和重新打开,应用稳定后内存几乎没变化。所以在用户点击Back按钮时,完全可以保留该Activity,达到快速热启动的目的。

    3. 具体实现

    0.代码实现如下

    @Override
    public void onBackPressed() {
      if (!moveTaskToBack(true)) {
          super.onBackPressed();
      }
    }
    

    1.Android本身的设计,就是允许App自定义Back的行为的,所以,理论上所有类型的App都可以采用该方案优化。

    2.主界面占据内存比较少的应用可以直接添加代码对应代码即可

    3.对于在首界面占用内存资源比较多的应用,应该检查Activity 和 Fragment 的 destroy 方法,将释放资源的操作移动到 pause 或 stop,然后再检查create方法,将加载资源操作移动到 resume 或 start 。

    相关文章

      网友评论

          本文标题:电话应用热启动用户体验优化

          本文链接:https://www.haomeiwen.com/subject/wlvyfxtx.html