【问题标题】:Remote finish an activity called by intent-filter?远程完成意图过滤器调用的活动?
【发布时间】:2014-05-04 18:35:46
【问题描述】:

我有 2 个活动:AB。 A 通过Intent.ACTION_VIEW 调用浏览器意图,并且在用户登录浏览器后,他被意图过滤器重定向到活动 B。
问题是:当用户到达 B 时,活动 A 必须完成。
我知道startActivityForResult(),但是我不直接调用A->B,它是A->browser->B,所以它不起作用。
但是,我不能在 A 中使用 onStop() 和 onDestroy() 方法,因为应用程序会因方向更改而崩溃。
我该怎么办?

【问题讨论】:

  • 可以选择使用WebView 代替成熟的浏览器吗?

标签: android android-intent activity-lifecycle


【解决方案1】:

当用户到达 B 时,活动 A 必须完成。

为什么?

如果用户从 B(或浏览器)返回,请关闭它

我从来没有遇到过活动必须完成的问题。也许你可以多解释一下情况,以便我们更好地理解。

顺便说一句:您也可以通过编程方式锁定方向,但我认为您的运行方向错误。

//汉斯

【讨论】:

  • A 是登录活动,带有一个按钮“登录”。当按下时,他被重定向到浏览器,登录并返回应用程序(这是 API 限制)。当用户在Activity B上按下“返回”时,他必须退出应用程序,不会返回登录Activity A
【解决方案2】:

对于Android API Version from 16 使用finishAffinity 关闭Activity B 以及紧接在它下面的所有活动,这样活动A 也会显示出来。

只需Overridefinish 中的Activity B 方法@

 @Override
public void finish(){
    finishAffinity(); // supported only from API 16
}

默认情况下,所有 Activity 将具有相同的 taskAffinity 作为包名称。如果您只想关闭特定的 Activities ,则为所需的 Activities 设置自定义 Affinity 名称

finishAffinity - 在当前任务中完成此活动以及紧接其下的所有具有相同亲和力的活动。这通常在应用程序可以启动到另一个任务时使用(例如从它理解的内容类型的 ACTION_VIEW)并且用户已经使用向上导航切换出当前任务并进入它自己的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多