首先,當我們案back鈕時activity會被毀滅掉(android內置)
因此這次要說明的是,如何back鈕不被毀滅,做法就是改寫Activity中的onKeyDown()
if(keyCode == KeyEvent.KEYCODE_BACK){ moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); } |
在開發繪圖軟體中,頂層控鍵要呼叫activity,但按了按鈕都沒有用,那是因為系統已經認定該activity已經出現(頂層的關係),因此需要再經由一個步驟完成,也就是使用serveice,透過serveice呼叫該activity起來,要注意的事,呼叫activity的Intent必須設定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" > |
FLAG_ACTIVITY_NEW_TASK標記
當傳遞給startActivity()的Intent物件包含FLAG_ACTIVITY_NEW_TASK標記時,系統會為需要啟動的activity尋找與當前activity不同的task。如果要啟動的activity的affinity屬性與當前所有的task的affinity屬性都不相同,系統會新建一個帶那個affinity屬性的task,並將要啟動的activity壓到新建的task棧中;否則將activity壓入那個affinity屬性相同的棧中。
沒有留言:
張貼留言