天天看點

我所遇到的Activity的一些細節

1.當橫豎屏切換時:

   ① 控件的狀态是系統維護的,開發人員不用維護

   ② 使用者自定的變量會重新初始化

   解決: 

1 橫豎屏切換時:

          重寫onSaveInstanceState(),在這個方法中儲存資料(裡面含有Bandle參數)

          重寫onCreate()或onRestoreInstanceState(),從 Bundle 中解析出已儲存資訊并恢複activity狀态

        2 在清單檔案中給Activity配置 screenOrientation ---> portrait (頭像 ) landscape(風景) ---限制橫豎屏切換

        3 在橫豎屏切換時,不重新建立Acitivity 

           配置android:configChanges="keyboardHidden|screenSize|orientation"

   ③ 螢幕的配置參數發生改變的時候調用的方法

    public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

   // 豎屏

}else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){

   // 橫屏

}

   }

   ④ 在activity中監聽傳回按鍵的按下操作

     public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {

           if (!isExit) {

               Toast.makeText(SeriesActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show();

               isExit = true;

               mHandler.sendEmptyMessageDelayed(EXIT, DELAY_TIME);

               return true;

           } else {

           }

        }

        return super.onKeyDown(keyCode, event);

      }

      @Override

      public boolean handleMessage(Message msg) {

           switch (msg.what) {

               case EXIT:

                   isExit = false;

                   break;

           }

           return false;

       }

   ⑤ 橫豎屏切換的activity

     前一個activity執行到destroy,後一個activity從oncreate()開始執行到onResume();

   ⑥ Activity之間的跳轉

     前一個activity執行到stop(), 後一個activity從oncreate()開始執行到onResume(),按回退鍵銷毀;

繼續閱讀