2013-10-31 154 views
0

我想知道我的應用程序中是否可以運行多個應用程序,我的意思是我們公司有幾個應用程序,用戶需要將一個過程添加到2個不同的應用程序中應用。我想知道是否可以創建一個快捷方式來將這兩個應用程序作爲單獨的應用程序啓動?Android啓動多個活動

我的意思是每一個有標誌「Intent.FLAG_ACTIVITY_NEW_TASK」

讓分配一些「暱稱」 開門紅=應用程序,即時通訊使用。當我要添加快捷方式,打開2個應用 I1 =申請1 I2 =應用2

,我使用的樣本代碼:

Intent i1 = getAppIntent(someValueToGetTheIntent); 
if (i1 != null){ 
    i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(i1); 
} 

Intent i2 = getAppIntent(someOtherValueToGetTheIntent); 
if (i2 != null){ 
    i2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i2.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(i2); 
} 

當我做到這一點,I2申請(意向)位於頂部。如果我嘗試導航到i1(在打開的應用程序菜單中)切換到其他應用程序,它不存在,我可以看到開啓者和i2但不是i1。如果我點擊後退按鈕,則啓動i1,然後我看到所有這些。但我希望他們從一開始就在那裏。

我需要3打開並允許用戶在它們之間導航的原因是因爲3包含與應用程序進行交互所需的不同信息。 eje opener有一個表格可以填寫學校和學生的信息,i1有學校信息,i2有學生信息。

我知道最好的方法是整合應用程序,但目前不可能,所以這對用戶來說是一個很大的幫助。

所以我想知道如何啓動多個應用程序作爲新任務,以便他們兩個應用程序都在應用程序菜單上,用戶可以在它們之間切換。

編輯

我注意到方法startActivities是得到一個意向陣列的火災所有的應用程序,這是什麼樣的,我需要,但仍。 它提到: 「將在用戶第一次訪問時創建(由於從頂部的活動中按下)。」我不知道是否可以避免後退按鈕的行爲。

所以我可以在用戶必須按下後才能「創建」它們。

回答

0

謝謝大家對你的幫助,我知道最好的辦法是隻利用Android已摻入startActivities,並讓需要使用後退按鈕活動之間導航用戶知道。目前這不適合我。

我最終使用的定時器是這樣的:

lunchAppTimer.removeCallbacks(runnable); 
lunchAppTimer.postDelayed(runnable, 2000); 
Handler lunchAppTimer = new Handler(); 
private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     new LaunchApplication(mLIntent).execute(); 
    } 
}; 

在LaunchApplication我有我的startActivity這個迭代直通所有我需要在任何特定時刻的活動。

再次,這可能不是最好的方法,但在我做的搜索中,我無法找到更好的解決方案來運行2個或更多的應用程序。

1

是的,你可以,我會建議在異步線程上運行它們。這裏是我用於在我的android應用程序中運行異步任務的ksoap2庫的jar。

https://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/#ksoap2-android-assembly%2F2.5.5

LMK如果您需要幫助了。

+0

感謝我有異步任務和活動,試圖創建,但I1活動創建,直到用戶點擊「返回」按鈕 – cesaregb

+0

在後執行每個方法都是你叫下一個後續的方法? – ksudu94

1

Android一次只允許一個活動處於活動狀態。當一個新的活動開始時,當前的活動被保存到「活動棧」供以後使用。如果垃圾收集器確定它是安全的,系統最終清理活動堆棧。

要做的事情的正確方法是爲您的應用程序在它們之間傳遞創建自定義意圖。這是在不相關的應用程序之間傳遞數據的Android方式,是處理您的問題的正確方法。

如果你在談論兩項活動,而不是兩個應用程序,你可以使用startActivityForResult()。這允許您從活動中返回結果,而不是在意圖中明確地傳遞結果。這可能會更好,因爲您並不總是必須以這種方式自己序列化它。

+0

在談論應用程序,我沒有控制他們,所以我不能使用startActivityForResult,因爲我不能更新應用程序的任何活動。其實這就是爲什麼我無法傳遞他們之間的數據。 – cesaregb