如果我的应用程序是从共享功能实例化的,那么在完成上传后如何关闭我的应用程序
How to close my app after it's finished uploading if it's instantiated from the share function
在我的应用程序中,我允许通过其他应用程序共享内容(图像或文本)。我已按照此处的说明完成此操作:https://developer.android.com/training/sharing/receive.html
当用户尝试通过其他应用分享内容时(如果应用已关闭),我必须执行以下步骤:
- 登录用户
- 从服务器初始化一些基本信息
- 将他们带到一个屏幕,在那里他们可以输入他们正在共享的任何内容的标题 + 从实例化共享的其他应用程序提供的内容
- 允许用户按下按钮将其上传到服务器。
问题是,虽然上述步骤都运行良好,但我无法找到在上传完成后终止我的应用程序的方法。这意味着,我的应用程序位于另一个应用程序(启动共享意图)之上,并且用户无法返回到原始应用程序,除非他们按下后退按钮几次。
我最想做的是在分享完成(或取消)后立即关闭我的应用程序,并将用户带回原来的应用程序。
到目前为止我尝试过的:
- 我试图在上传完成后向
ShareActivity
(处理共享的主要 activity)提出一个意图,然后在那个上调用 onFinish
但不幸的是,这只需要我回来再次上传 activity,这是堆栈中的前一个 activity。尽管 ShareActivity 应该是 activity 堆栈中的 parent activity,但无论出于何种原因,意图中使用的 FLAG_ACTIVITY_CLEAR_TOP
在这里似乎没有任何效果。
- 我尝试在 ShareActivity 上调用
system.exit(0)
(这是使用 (1) 中提到的意图实例化的)。这只是完全重新启动我的应用程序,同时仍然位于启动共享的应用程序之上.
我真的不知道我还能做些什么来强制关闭我的应用程序。我知道我应该让 Android 在处理应用程序的生命周期方面做任何它想做的事,只要我的应用程序以独立模式打开,我就非常满意。
但这是不同的,因为我相信我的应用程序在共享完成后肯定会完全关闭。
我确信一定有办法做到这一点,这就是为什么我在这里问这个问题,以防有人以前遇到过这个问题并且能够帮助我解决这个问题。
非常感谢,
我最终将参数 (shouldExit
) 传递给捆绑包中的所有先前活动,并在 onCreate() 上检查了该参数,如果是,我调用了 finish()
。不理想,因为链中有很多活动,但至少它有效。
在我的应用程序中,我允许通过其他应用程序共享内容(图像或文本)。我已按照此处的说明完成此操作:https://developer.android.com/training/sharing/receive.html
当用户尝试通过其他应用分享内容时(如果应用已关闭),我必须执行以下步骤:
- 登录用户
- 从服务器初始化一些基本信息
- 将他们带到一个屏幕,在那里他们可以输入他们正在共享的任何内容的标题 + 从实例化共享的其他应用程序提供的内容
- 允许用户按下按钮将其上传到服务器。
问题是,虽然上述步骤都运行良好,但我无法找到在上传完成后终止我的应用程序的方法。这意味着,我的应用程序位于另一个应用程序(启动共享意图)之上,并且用户无法返回到原始应用程序,除非他们按下后退按钮几次。
我最想做的是在分享完成(或取消)后立即关闭我的应用程序,并将用户带回原来的应用程序。
到目前为止我尝试过的:
- 我试图在上传完成后向
ShareActivity
(处理共享的主要 activity)提出一个意图,然后在那个上调用onFinish
但不幸的是,这只需要我回来再次上传 activity,这是堆栈中的前一个 activity。尽管 ShareActivity 应该是 activity 堆栈中的 parent activity,但无论出于何种原因,意图中使用的FLAG_ACTIVITY_CLEAR_TOP
在这里似乎没有任何效果。 - 我尝试在 ShareActivity 上调用
system.exit(0)
(这是使用 (1) 中提到的意图实例化的)。这只是完全重新启动我的应用程序,同时仍然位于启动共享的应用程序之上.
我真的不知道我还能做些什么来强制关闭我的应用程序。我知道我应该让 Android 在处理应用程序的生命周期方面做任何它想做的事,只要我的应用程序以独立模式打开,我就非常满意。
但这是不同的,因为我相信我的应用程序在共享完成后肯定会完全关闭。
我确信一定有办法做到这一点,这就是为什么我在这里问这个问题,以防有人以前遇到过这个问题并且能够帮助我解决这个问题。
非常感谢,
我最终将参数 (shouldExit
) 传递给捆绑包中的所有先前活动,并在 onCreate() 上检查了该参数,如果是,我调用了 finish()
。不理想,因为链中有很多活动,但至少它有效。