Android启动多个活动

时间:2013-10-31 20:41:41

标签: android android-intent start-activity

我想知道我是否可以通过我的应用程序中的点击运行多个应用程序,我的意思是我们公司有一些应用程序,用户需要从2个不同的应用程序添加信息。我想知道是否可以创建一个快捷方式来启动这两个应用程序作为一个单独的应用程序?

我的意思是每个人都有一个标志“Intent.FLAG_ACTIVITY_NEW_TASK”

让我们分配一些“昵称” opener =我正在使用的应用程序。我想在哪里添加快捷方式来打开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应用程序(Intent)位于顶部。如果我尝试导航到i1(在打开的应用程序菜单中)切换到另一个应用程序,它不存在,我可以看到开启者和i2但不是i1。如果我单击后退按钮,则启动i1然后我会看到所有这些。但我希望他们从一开始就在那里。

我需要打开3并允许用户在它们之间导航的原因是因为3包含与应用程序交互所需的不同信息。 开幕式有一个表格可以填写学校和学生的信息,i1有学校信息,i2有学生信息。

我知道最好的方法是整合应用程序,但目前还不可能,所以这对用户来说是一个很好的帮助。

所以我想知道如何启动多个应用程序作为新任务,这样他们两个应用程序都可以在应用程序菜单上,用户可以在它们之间切换。

修改

我注意到获取Intent数组的方法startActivities会触发所有应用程序,这是我需要的,但仍然如此。 它提到: “将在用户首次访问时创建(由于从顶部的活动中退回)。”我想知道是否可以避免后退按钮的行为。

所以我可以在用户必须按下后面“创建”它们。

3 个答案:

答案 0 :(得分: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

如果您需要帮助,请提供帮助。

答案 1 :(得分:1)

Android一次只允许一个活动处于活动状态。启动新活动时,当前活动将保存到“活动堆栈”以供以后使用。如果垃圾收集器确定它是安全的,系统最终会清理活动堆栈。

执行您尝试执行的操作的正确方法是为应用程序创建自定义意图,以便在它们之间传递。这是在不相关的应用程序之间传递数据的Android方式,也是处理问题的正确方法。

如果您正在讨论两个活动,而不是两个应用程序,则可以使用startActivityForResult()。这允许您返回活动的结果,而不是在intent中显式传递它。这可能会更好,因为您不必总是以这种方式自行序列化。

答案 2 :(得分: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个或更多应用程序。