2013-02-18 18 views
0

主要活動,我開發了一種含有2個活動的應用程序如何啓動Android活動:不顯示在後面

  1. 推出的主要活動,其中用戶啓動應用程序。

  2. 當用戶點擊主屏幕上的按鈕小部件 時,將啓動第二項活動。

我創建了我的小部件和用戶單擊小部件按鈕時將顯示的視圖。

我的問題:UI是主要的活動上面顯示的第二個活動,因爲第二個活動佈局是透明的,因爲我不想讓在窗口小部件,當點擊主屏幕上仍然可見的主要活動是可見的。

如何在不啓動下面的主要活動的情況下只啓動第二個活動?我試圖從清單文件中刪除主要活動中的<action android:name="android.intent.action.MAIN" />,小部件工程,但是當我在手機中安裝我的應用程序時,沒有安裝應用程序圖標,因此我無法啓動主要活動。

我希望我已經表達了我的問題。

+0

您是否在啓動新活動後嘗試在第一個活動中調用finish()? – 2013-02-18 15:37:48

+0

如果你不知道answar,請不要拒絕投票任何問題.. – 2013-03-14 12:26:07

回答

0

我解決我的問題是這樣的:在清單文件

1 - 我添加到主活動屬性:

android:launchMode="singleTask" 

我測試了它不會使加載時間時重新啓動活動不再通常是因爲此屬性不會擦除應用程序緩存並將意圖實例保留在內存中。

2 - 添加這主要活動類:

@Override 
void onPause() 
    { 
    super.onPause(); 
    finish(); 
    } 

感謝大家的幫助。

1

你必須完成第一Activity啓動之後的第二Activity

startActivity(<secondActivity>); 
finish(); 
+0

謝謝,但我不能這樣做,因爲我從小部件的第二個活動沒有從主要活動,所以我不能訪問主要活性物體完成它..任何想法我怎麼能做到這一點? – Meher 2013-02-18 15:44:50

0

您可以完成您的主要活動中,你開始你的第二個活動後:

startActivity(secondActivity.class); 
finish(); 

或應用程序清單中您可以在主要活動中使用noHistory標誌,因此當您離開它時會調用完成本身。

android:noHistory="true" 
+0

坦克你,我正在尋找這個,我發現也可以通過添加android:launchMode =「singleTask」到我的活動屬性,這是更好的解決方案嗎?如果我使用android:noHistory =「true」,那麼android永遠不會存儲應用程序內存緩存數據,因此每次都可以使應用程序加載時間更長? – Meher 2013-02-18 15:51:46

+0

noHistory只會在mainActivity啓動時退出時啓動(無論是關閉它還是進入新活動),它都將完成。這是否對您的緩存有負面影響我不確定,您必須查看它。 singleTask將完成堆棧中的其他活動,因此它可能具有相同的效果。 – 2013-02-18 15:55:02

0

或許具有不同的意圖動作,並與所述第二活動將工作相關聯的意圖過濾器。看看documentation。記事本應用程序示例應該類似於需要執行的操作。

+0

我已經爲這兩項活動制定了不同的意圖操作和過濾器。 – Meher 2013-02-18 16:13:21

+0

然後,您可以直接使用其意向過濾器來調用第二個活動。你可以通過使用Intent.setData()方法調用來傳遞你的第二個活動可以處理的uri。這裏有一些可以幫助你的[documentation](http://developer.android.com/training/basics/intents/sending.html)。 – ebarrenechea 2013-02-18 16:22:12