2013-01-01 162 views
0

我目前正在添加選項以從另一個應用程序啓動我的應用程序。 從另一個應用程序啓動時,該應用程序的外觀和行爲將有所不同。 入口點活動傳遞一個不同的意圖操作和一些額外的。 我需要爲其他活動保存這些附加內容,但我無法將它們保存在應用程序中, 因爲這會影響從啓動程序啓動時的應用程序。 我能想到的唯一解決方案是爲每個新活動傳遞額外信息: intent.putExtras(getIntent()); 等維持當前堆棧的狀態。 有沒有更好的方法?感謝, 沙龍。活動堆棧狀態

+0

使用setter和getter。一旦存儲值,那麼你可以在你的應用程序的任何地方打電話。 –

+0

但是將其他活動的附加項目傳遞給其他活動有什麼問題? –

+0

TechEnd,應用程序中的setter和getter(擴展類)?我知道這兩個堆棧都使用相同的應用程序實例。 Aleks G,我希望能在全球範圍內解決這個問題。 – sharon

回答

1
Because that will affect the app when launched from the launcher. 

我不這麼認爲,當應用程序從發射裝置發射,您通過getIntent()獲得意圖包含"android.intent.action.MAIN"作用。因此,您可以運行檢查以查看它是從啓動器還是其他應用程序啓動。 然後,您可以在一個sharedpreference xml文件中恢復extras中包含的值(如果有其他應用程序啓動它),以便所有其他活動都可以方便地訪問它們。

+0

感謝您的回答。 我可以在入口點檢測啓動模式。 問題在於pref。文件是共享的。 例如,如果用戶從啓動器啓動應用程序 然後從另一個應用程序啓動該應用程序,然後回到從啓動器啓動的應用程序, 從啓動器啓動的應用程序的行爲將類似於從另一個應用程序啓動的應用程序。 – sharon

+0

@sharon實際上,您可以將這些值保存在不同的sharedPreference xml文件中。一個應用程序可以有幾個sharedPreference xml文件。檢測應用程序的啓動方式並從相應的xml文件加載值。 – Huang

+0

我仍然需要將參數傳遞給每個活動,指出哪個前綴。文件根據啓動模式使用。 – sharon

0

我以不同的方式解決了這個問題。 每當應用程序啓動時,先前啓動的活動都會發送一個事件。 然後堆棧被重定向到一個特殊的活動,通知用戶該應用程序已在別處啓動。 此活動有一個按鈕來重新啓動應用程序。 這種方式應用程序不能並行運行。 不知道這是最好的解決方案,但它的工作原理,它可以防止不良的應用程序狀態。 沙龍。