Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在知道包名称的情况下,将具有活动堆栈的任务放在前面_Android_Android Activity_Android Intent_Stack - Fatal编程技术网

Android 在知道包名称的情况下,将具有活动堆栈的任务放在前面

Android 在知道包名称的情况下,将具有活动堆栈的任务放在前面,android,android-activity,android-intent,stack,Android,Android Activity,Android Intent,Stack,我有下面的场景 我使用已知的packagename运行应用程序,该应用程序将活动A1作为启动程序的主活动启动。现在从A1开始,我启动这个应用程序的另一个活动,可能是设置活动或其他活动,我们称之为A2。所以我们的堆栈是A1-A2 现在我通过按home键切换回主屏幕。我启动另一个应用程序,我们称之为B。B现在希望能够切换回当前暂停的A应用程序,保留其活动堆栈。那就意味着我们最后有了B-A1-A2。一般来说,这是可能的吗?请注意,我只知道A的包名,没有关于应用程序A的更多信息 以下是我已经尝试过但没有

我有下面的场景

我使用已知的packagename运行应用程序,该应用程序将活动A1作为启动程序的主活动启动。现在从A1开始,我启动这个应用程序的另一个活动,可能是设置活动或其他活动,我们称之为A2。所以我们的堆栈是A1-A2

现在我通过按home键切换回主屏幕。我启动另一个应用程序,我们称之为B。B现在希望能够切换回当前暂停的A应用程序,保留其活动堆栈。那就意味着我们最后有了B-A1-A2。一般来说,这是可能的吗?请注意,我只知道A的包名,没有关于应用程序A的更多信息

以下是我已经尝试过但没有成功的方法:

Intent intent = getPackageManager().getLaunchIntentForPackage(PKGNAME);
            if(intent!=null)
            {
                intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(intent);
                finish();
            }

但这会给出B-A1-A2-A1。

您可能需要打印出您的状态,并查看在按下home键时是否暂停。这可能是因为您还运行了多个活动副本。通过记录,您可以确定这一点。在你的情况下,哪一种情况正在发生,将使答案不同。看看当按下home键时,你是否暂停-这里还有什么情况?只有另一种可能性,即在按下home(主页)按钮后,android系统会直接停止该应用程序。事实并非如此,因为我的B应用程序是一个taskmanager,它显示正在运行的任务。现在我想从taskmanager切换回保留活动堆栈的TaskA。应该是可能的。我想知道的是,该标志没有将任务重新排序到最前面,它只是在现有活动之上创建了一个新的主活动。如果它正在创建一个新活动,那么如果您在暂停时保存状态,那么您可以在再次创建时恢复它,如果它被破坏,则删除状态。我询问您的活动是否被暂停,因为根据发生的情况,您的活动可能会被终止,例如,如果您旋转手机。我的观点是,您应该确切地了解发生了什么,然后查看传递给您的活动的savedInstanceState,看看其中是否有帮助。不要假设,要知道发生了什么,这样你才能知道如何解决问题。@mad对这件事有什么反馈吗?对于Android 10 Gingerbread 2.3.3?您可能希望打印出您的状态,并查看在按下home键时是否暂停。这可能是因为您还运行了多个活动副本。通过记录,您可以确定这一点。在你的情况下,哪一种情况正在发生,将使答案不同。看看当按下home键时,你是否暂停-这里还有什么情况?只有另一种可能性,即在按下home(主页)按钮后,android系统会直接停止该应用程序。事实并非如此,因为我的B应用程序是一个taskmanager,它显示正在运行的任务。现在我想从taskmanager切换回保留活动堆栈的TaskA。应该是可能的。我想知道的是,该标志没有将任务重新排序到最前面,它只是在现有活动之上创建了一个新的主活动。如果它正在创建一个新活动,那么如果您在暂停时保存状态,那么您可以在再次创建时恢复它,如果它被破坏,则删除状态。我询问您的活动是否被暂停,因为根据发生的情况,您的活动可能会被终止,例如,如果您旋转手机。我的观点是,您应该确切地了解发生了什么,然后查看传递给您的活动的savedInstanceState,看看其中是否有帮助。不要假设,要知道发生了什么,这样你才能知道如何解决问题。@mad对这件事有什么反馈吗?对于Android 10姜饼2.3.3?