2013-10-31 158 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