【问题标题】:Finish Current Activity and start a new one完成当前活动并开始一个新活动
【发布时间】:2013-01-15 06:47:14
【问题描述】:

我有一个 Fragment F。从服务获取结果后,F 需要完成它所在的活动并在 Web 浏览器中启动一个页面,我使用 Intent 执行此操作。

如果用户按下后退按钮,它似乎工作正常。但是,如果他从最近的应用程序启动该应用程序,则该活动尚未完成。 我已经考虑过其他方法。就像完成当前活动并从父活动打开页面一样。但是我必须对流程进行很多更改。所以这将是我最后的选择。有什么方法可以确保即使我从最近的应用程序启动 Activity 也已完成?

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
getActivity().finish();

编辑:添加代码。

【问题讨论】:

标签: android


【解决方案1】:

尝试使用此代码启动浏览器并清除应用程序的所有堆栈

Intent intent  = new Intent(); // need to set your Intent View here
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
getActivity().startActivity(intent);
getActivity().finish();

更新

在您的 AndroidManifiest.xml 文件中的活动中尝试此属性

<activity android:name=".MainActivity"
        android:excludeFromRecents="true" ...

【讨论】:

  • 别忘了他在一个Fragment中..所以应该是getActivity().finish()和getActivity.startActivity(intent)
  • 我使用 Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));在默认浏览器中打开它。添加标志没有任何区别。 从最近的应用打开时仍然会发生这种情况。当用户按下后,它工作正常。
  • @Pratik:我最初是这么想的。它避免了这个问题。但感觉用户会期望该应用程序出现在最近的列表中。因为我们有问题而阻止用户解决它不是公平的吗?
  • 我想从最近的人中选择排除是唯一的选择。活动按预期结束。只是从最近启动时,操作系统启动了最后一个活动的应用程序。
【解决方案2】:

使用下面的代码

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

this.finish();

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多