2011年5月3日

Android 返回鍵不destory方法



首先,當我們案back鈕時activity會被毀滅掉(android內置)
因此這次要說明的是,如何back鈕不被毀滅,做法就是改寫Activity中的onKeyDown()

     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if(keyCode == KeyEvent.KEYCODE_BACK){
         moveTaskToBack(true);
             return true;
         }
         return super.onKeyDown(keyCode, event);
     }



在開發繪圖軟體中,頂層控鍵要呼叫activity,但按了按鈕都沒有用,那是因為系統已經認定該activity已經出現(頂層的關係),因此需要再經由一個步驟完成,也就是使用serveice,透過serveice呼叫該activity起來,要注意的事,呼叫activityIntent必須設定flag(),但這樣還是不夠的這樣子系統會出現很多同一個activity,因此還必須到androidmanifest中定義該activity為單一模式。
     @Override
      public void onStart(Intent intent, int startID) {
             Intent tancIntent = new Intent(getApplicationContext(),
                     DrawPanel.class);
             tancIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             startActivity(tancIntent);
         }

<activity android:name=".DrawPanel"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:launchMode="singleTask"
            >


FLAG_ACTIVITY_NEW_TASK標記
當傳遞給startActivity()Intent物件包含FLAG_ACTIVITY_NEW_TASK標記時,系統會為需要啟動的activity尋找與當前activity不同的task。如果要啟動的activityaffinity屬性與當前所有的taskaffinity屬性都不相同,系統會新建一個帶那個affinity屬性的task,並將要啟動的activity壓到新建的task棧中;否則將activity壓入那個affinity屬性相同的棧中。




沒有留言:

ShareThis