程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务?

开发过程中遇到使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务的解决方法建议,希望对你解决使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务有所启发或帮助;

我有两个安卓应用,我们称它们为应用 A 和应用 B。
在应用程序 A 中,我创建了一个共享意图,如下所示:
shareIntent=Intent.createChooser(sendIntent,null); // sendIntent contains data to share.
这将用于将数据传递给应用程序 B。
应用 B 的 MainActivity(它唯一的 Activity)配置为具有 launchMode="singleTask"

行为 1
如果从应用程序 A 中我使用 startActivity(shareIntent) 并且应用程序 B 在后台,它会进入前台并使用 onNewIntent 方法处理意图。如果应用 B 不在后台,它会为应用 B 启动一个新任务,其初始意图设置为从应用 A 传递的 sendIntent。

行为 2
如果从应用 AI 使用 startActivityForResult(shareIntent,succesS_CODE),应用 B 是否在后台无关紧要,它会重新启动,而且应用 B 的 @H_205_5@mainActivity 被启动并推送到应用 A 的后台堆栈,它不会在单独的任务中开始,在此之后我有 2 个应用程序 B 的 MainActivity,一个我保留在后台,一个在应用程序 A 中启动。

为什么 startActivityForResult 会导致行为 2?
如果应用 B 的开发者无法控制应用 A 如何启动它以始终显示行为 1,那么作为应用 B 的开发者可以做些什么?

解决方法

如果 Activity 的启动模式为 startActivityForResult() 或 singleInstanceActivitystartActivityForResult()singleTaskActivity,您不能使用 . The reason is that 启动 requires the target (i: the one being launched) to run in the **same task as theActivity` 期待结果**

通常,如果您尝试启动 Activity 并且该 Activity 声明为启动模式为 singleTasksingleInstance,Android 会自动将 Intent.FLAG_ACTIVITY_NEW_TASK 添加到Intent 并确保目标 Activity 在单独的任务中启动。

如果开发者希望使用 Activity 启动他的 startActivityForResult() 并且他对 Activity 进行编码以实际返回结果,那么声明此 {{1} } 启动模式为 ActivitysingleTask

这种行为不是你所说的你看到的,但很明显 singleInstance 的合同和 startActivityForResult() 的启动模式之间存在冲突。

大佬总结

以上是大佬教程为你收集整理的使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务全部内容,希望文章能够帮你解决使用 startActivityForResult 方法启动时,singleTask 应用程序不会重用最近应用程序中已经存在的任务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用