Android製品開発(二)-->起動ページ最適化

5449 ワード

前回の文章では、Androidのコード仕様について説明しました.ここでは、チームワークの中でコード仕様を約束することを強くお勧めします.あまり規範的ではない仕様でも、規範がないよりずっと良いです.特にチーム製品の研究開発では、製品の持続的な反復の過程で、コード仕様が製品の反復に与えるメリットをますます意識することができます.もちろん、ここでは、必ず文中で与えられた符号化規範に従ってチームで使用する符号化規範として使用することを要求するのではなく、チーム協力の中で自分の符号化規範を約束することを望んでいる.たとえそれが十分な規範でなくても、具体的な符号化規範は参考にすることができる:Android製品研究開発(一)->実用開発規範.
この文章では、主に起動ページの最適化について紹介します.起動ページの最適化はUE側の内容です.遅い起動ページはユーザーに耐えられないと感じさせやすく、Appから「逃げる」ので、製品がより良いユーザー体験を持つためには、起動ページの最適化をするのは良い選択です.ここでは、実際に起動ページをどのように最適化したかを簡単に紹介します.
会社の製品が使用するデータ統計の製品は友盟で、最近製品のマネージャーは友盟のデータを見ている時、Appが起動ページで飛び出す率がとても高いことを発見して、起動ページの平均起動時間は2.8 sで、以下の図を書きます:
ナニー、2.8 sでアプリを起動しました.これは何ですか.最適化しましょう.
仕方なく、2.8 sは起動ページを起動する時間が確かに少し長く、ユーザーのトップページでのジャンプ率も確かに少し高い(ここではジャンプ率の概念を普及させる:ユーザーが現在のページからアプリケーションを離れる場合、はっきり言って起動ページの起動時間が長すぎて、多くのユーザーが待つことができなくて、直接起動ページからAppを離れた).
では、起動を最適化するときは、起動ページの論理を徐々に分析し、起動ページの実行論理を熟知してこそ、起動ページのロード速度を最適化することができます.
  • ページネットワーク要求最適化
  • を開始する.
    (1)起動ページで何をしましたか?私たちの起動ページは主に起動ページを表示し、ネットワーク構成情報をロードするために使用されています.具体的には、
      App h5   url  
    
            
    
                   
    
              ,                   ,        
    

    (2)最適化できるところは?このように、起動ページにネットワークリクエストがあるため、アクティブな遅延3秒でトップページをジャンプするため、起動ページのロードが遅すぎるため、ネットワークリクエストと遅延ジャンプの面で最も重要な最適化が行われています.
    (3)最適化方法現在の論理では、構成情報が正常に引き出されるかどうかにかかわらず、3秒以内にホームページをスキップする必要がある.このように考えることができる.この3つの構成情報が引き出される時間が3秒未満であれば、3秒以内にメインインタフェースをスキップする必要はない.構想はすでに出てきたが,残りは具体的に実現した.の
    (4)ページネットワーク要求最適化の具体的な実践を開始する
    timer = new Timer();timerTask=new TimerTask(){@Override public void run(){if(isGoToComplete){L.i(「2 s完了待ち、timerタスクキャンセル...」);cancelTimer();return;}if(isLoadStartQueryComplete&&isLoadUserInfoComplete){//すでにブートマップL.i(「StartActivityでネットワークリクエストが完了し、ジャンプロジックが実行される......」);  handler.sendEmptyMessage(eventWhat);L.i(「StartActivityでネットワークリクエスト完了、timerタスクキャンセル...」);  cancelTimer();  }  }  };  timer.schedule(timerTask, 0, 100);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    

    ここでは,100 msごとに実行するtimerタスクを作成し,この2つのネットワーク構成情報をプルアップする非同期メッセージが完了したか否かを判断し,完了したらhandlerメッセージジャンプメインインタフェースを送信し,2秒以内にプルアップタスクが完了しなければ,直接ジャンプしながらtimerタスクをキャンセルする.
    簡単に言えば、起動ページの最長待ち時間は2秒であり、2秒以内にページを起動するネットワーク要求情報がまだ完了していないか、直接ホームページをジャンプするのを待っていない場合であり、2秒以内にページを起動するネットワーク要求が実行されると、直接ジャンプするのは2秒後にジャンプする必要がなく、これにより、起動ページはネットワーク要求の状況に応じてロード時間を大幅に短縮することができる.
  • ページ特効最適化
  • を開始
    現在、ほとんどのアンドロイドアプリは起動時に起動画面に似たものがあり、起動インタフェースであり、このアプリケーションのヒント文字、アニメーションなどが書かれていることが多い.そして、この開解インタフェースはグラデーションを実現し、loading等価果を実現することが多い.このように起動ページの時間が長ければ、ユーザーも時間が長く、耐えられないとは思わない.もちろん、この方法は視覚効果で「ページのロード速度が速い」という効果をもたらすだけです.
    ここでは、ページを起動するアニメーションの効果を簡単に実現します.
    //グラデーション表示起動画面AlphaAnimation alphaAnimation=new AlphaAnimation(0.3 f,1.0 f);  alphaAnimation.setDuration(2000);  contentView.startAnimation(alphaAnimation);  alphaAnimation.setAnimationListener(new AnimationListener(){@Override public void onAnimationEnd(Animation arg 0){L.i(「ページアニメーションの実行を開始...」);  }
            @Override
            public void onAnimationRepeat(Animation animation) {
                L.i("          ...");
            }
    
            @Override
            public void onAnimationStart(Animation animation) {
                L.i("          ...")
            }
    
        });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    

    ここのcontentViewは私たちがページActivityを起動するメインViewなので、ここでの実行効果は私たちのページActivityのインタフェースの透明度が徐々に増加し、ユーザーから見ればloading効果があるため、ロード速度が速く見えます.
  • 起動ページブラックスクリーンなし
  • ここではAndroidアプリの起動ページの黒い画面の問題も紹介します.Android開発アプリの起動時に特別な処理をしなければ、一瞬の黒い画面現象が発生します.ネット上ではこのような状況に対して一般的に2つの解決方法があります.
    (1)App起動ページが画像またはdrawableファイル
    @drawable/start_background
    1
    
    1
    

    App全体を設定するstyleファイルを設定し、Android:windowBackgroundプロパティを画像またはdrawableファイルに設定します.これにより、Appは起動中に起動ページの画像またはdrawableファイルを表示します.
    (2)App起動ページがLayoutファイル
    このときAppのstyleにbackgroundを設定することはできませんが、次に主流を求めるのは白い背景を設定することです.
    @color/c10
    1
    
    1
    

    ここで@color/c 10は私たちが定義した白い色の値で、処理後にAppが起動すると黒い画面の効果は現れません.
  • Application起動速度最適化アプリケーション起動プロセスは、まず、そのライフサイクルメソッド(onCreateメソッド)を実行するために作成されたApplicationのライフサイクルメソッド(onCreateメソッド)を実行します.具体的には、私のAndroidアプリケーションプロセス起動プロセス:Androidソース解析の(11)->アプリケーションプロセス起動プロセス
  • を参照してください.
    だからappの起動速度を高めて、Applicationの実行時間を速めるのも重要な方面で、ここで私はしばらくいくつかの原則をまとめました:
                Application ;
    
    Application                 ;
    
     App            dex    ;
    
     Application     ,        
    
  • ページマスク復帰ボタン
  • を起動する.
    一般的に私たちのAppでは、起動ページでいくつかのネットワーク操作、初期化構成などを実行します.そのため、ユーザーが戻るボタンを押してAppを終了することを望んでいません.そのため、起動ページで戻るボタンを遮断する必要があります.ここでは、具体的な実装について簡単に説明します.
    //****startActivityシールド物理リターンボタン**@param keyCode*@param event*@return*/@Override public boolean onKeyDown(int keyCode,KeyEvent event){if(keyCode==KeyEvent.KEYCODE_BACK){return true;  }  return super.onKeyDown(keyCode, event);  }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    

    ここでは起動ページActivityのonKeyDownメソッドを書き換え,まずユーザが押下したものがリターンキーであるか否かを判断し,もしそうであればそのままtrueに戻り,リターンキーの後続実行ロジックをブロックする.戻るボタンの実行プロセスについては、私のAndroidシステムの戻るボタンの実行プロセスを参照してください:Androidソースコード解析(二十九)->アプリケーションの戻るボタンの実行プロセス
    以上、個人がまとめたスタートページの要点や注意すべき点、個人の能力不足で間違いがある場合はご指摘ください.
    また、製品の研究開発技術、技術、実践に興味のある学生は私の:Android製品の研究開発->Android製品の研究開発を総括(持続的に更新)する(一)->実用開発規範
    githubに同期するには、次の手順に従います.https://github.com/yipianfengye/AndroidProjectあ、starとfollowへようこそ