Intent.addFlags() 启动Activity的20种flags

2023-11-19

前言

在使用startActivity时候出现异常:

Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到此异常的,是因为使用了Context的startActivity方法。
解决办法可以尝试:

Java代码中加一个flag,即intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。这样就可以在新的task里面启动这个Activity了。

if (intent.getAction().equals(ACTION)) {
Intent i = new Intent(context,MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}

简介

Activity是四大组件中最重要的一个,也是平时开发中接触最多的。与Activity启动行为相关的就是它的启动模式,Standard、SingleTop、SingleTask、SingleInstance这4种launchMode相信大家不陌生。

OK,相信你已经对Activity任务栈有一些理解了,能应对一些常见的开发场景了。然而,除了4种launchMode,还有更复杂的控制Activity行为的方式,那就是给启动Activity的Intent添加flag,使用 Intent.addFlags(int flags) 方法。看一下这个方法的参数,总共有20种:

		Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT,
        Intent.FLAG_ACTIVITY_CLEAR_TASK,
        Intent.FLAG_ACTIVITY_CLEAR_TOP,
        Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,
        Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,
        Intent.FLAG_ACTIVITY_FORWARD_RESULT,
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY,
        Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT,
        Intent.FLAG_ACTIVITY_MULTIPLE_TASK,
        Intent.FLAG_ACTIVITY_NEW_DOCUMENT,
        Intent.FLAG_ACTIVITY_NEW_TASK,
        Intent.FLAG_ACTIVITY_NO_ANIMATION,
        Intent.FLAG_ACTIVITY_NO_HISTORY,
        Intent.FLAG_ACTIVITY_NO_USER_ACTION,
        Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP,
        Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,
        Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,
        Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS,
        Intent.FLAG_ACTIVITY_SINGLE_TOP,
        Intent.FLAG_ACTIVITY_TASK_ON_HOME,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Intent.addFlags() 启动Activity的20种flags 的相关文章

随机推荐

  • JavaScript基础Day02:流程控制

    文章目录 1 顺序结构 2 分支结构 1 if语句 2 switch语句 3 循环结构 1 while语句 2 do while语句 3 for循环 1 顺序结构 2 分支结构 1 if语句 if 条件表达式 执行语句 if 条件表达式 成
  • Qt实现简易的浏览器

    一 Qt的webenginewidgets模块和MSVC2017编译环境的配置 webenginewidgets模块 该模块需要在安装Qt时勾选Qt WebEngine MSVC2017编译环境的配置 这里的MSVC选2017还是2015
  • XDOJ目录操作

    目录操作 类别 字符串处理 时间限制 1S 内存限制 256Kb 问题描述 在操作系统中 文件系统一般采用层次化的组织形式 由目录 或者文件夹 和文件构成 形成一棵树的形状 有一个特殊的目录被称为根目录 是整个文件系统形成的这棵树的根节点
  • Android自定义控件(四)---实战篇(详解onDraw)

    讲到这里 这个案例基本上快结束了 在绘制 onDraw 方法中 唯一的难点就是文字 基线的确定 这点请大家务必弄清楚 废话不多说 上码 首先 我们先不管基不基线的 先让文字显示出来再说 package com example mytextv
  • 深度学习虚拟环境在不同机器之间的迁移

    不同机器之间虚拟境的复制 假设有两台机器 都用的是anaconda配置虚拟环境的 且虚拟环境都在anaconda3 envs 目录下 那么复制虚拟环境可以直接将一台机器anaconda3 envs 目录下的虚拟环境 对应该目录下的一个文件夹
  • uniapp微信小程序引入threeJs并导入模型

    前言 我的需求是使用uniapp写微信小程序 在小程序中使用threeJs就行了 目前暂不考虑兼容app什么的 1 引入小程序版的threejs库实现 2 使用webview实现 推荐 重点 我的建议是使用这个库 https github
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • 跟我一起写Shell脚本之十八--常用命令(head)

    1 介绍 head也是我们经常在脚本中用到的一个命令 主要用来显示文件的开头部分内容 我们可以用man head查看下它的介绍 NAME head output the first part of files SYNOPSIS head O
  • Spring系列之@Aspect中@Pointcut 12种用法

    先了解几个概念 文中会涉及几个概念 先了解一下 target 用来表示目标对象 即需要通过aop来增强的对象 proxy 代理对象 target通过aop增强之后生成的代理对象 AspectJ AspectJ是什么 AspectJ是一个面向
  • [C++]备忘录模式

    备忘录模式 Memento Pattern 保存一个对象的某个状态 以便在适当的时候恢复对象 备忘录模式属于行为型模式 github源码路径 https github com dangwei 90 Design Mode 此文件包含 mai
  • Error:Cannot build artifact xxx:war exploded’ because it is included into a circular dependency 解决方法

    我报的错误是day0601和day1202冲突 试了网上的方法删除了idea中artifact中重复文件并没有解决问题 在网上找了很久也没解决 后来自己试了一下 这样操作以后我这个就不会报循环依赖的错误了
  • 天使投资和风险投资有何区别?

    7月5日 天使投资人张青永 左 和创业者胡宁波 右 做客雅虎 谈融资知识和技巧 以下内容摘自实录 主持人 我觉得 赢在中国 的目的就达到了 那进入我们今天的主题就是融资基础知识和技巧 这是一个很专业化的知识 大家对这个并不太清楚 比如天使投
  • 全网最详细IDEAvim配置(.ideavimrc)

    IDEAvim 写在前面 本配置文件用到的插件如下 IdeaVim IdeaVim EasyMotion IdeaVimExtension which key Vim快捷键提示插件 CodeGlance Pro 右侧代码小地图 Transl
  • Python下载库超时Connection to files.pythonhosted.org timed out问题解决(换源)

    一年没用Python 这突然有节课老师让用Python 用就用吧 一来就是一个下马威 pip版本太低不支持 更新还更新不了 就是超时 官网也进不去 抓狂中 按照提示命令更新 更新超时 哇呀呀呀 我们还是冷静下来分析以下问题吧 错误信息提示连
  • 一些常见BootLoader介绍

    首先区分一下BootLoader和Monitor的概念 严格来说 BootLoader只是引导设备并且执行主程序的固件 而Monitor还提供了更多的命令行接口 可以进行调试 读写内存 烧写Flash 配置环境变量等 Monitor在嵌入式
  • Qt自定义界面类并提升(提升的窗口部件)

    1 用Qt Creator新建一个自定义Widget 类名自定义为 QMyForm 2 在Qt Creator自带的设计师里面 把普通的Wiget提升为自定义的QMyForm 选择菜单 提升为 3 手动输入提升的类名 QMyForm 然后点
  • [lightm显示]ubuntu卡在启动界面

    解决lightdm刚下载 重启电脑ubuntu卡在紫色启动界面 1 重启电脑 2 进入恢复模式下的root 3 命令行输入 4 命令行输入reboot 环境 ubuntu20 04 解决 把显示管理器重新改回gdm3即可 1 重启电脑 2
  • 知识图谱之知识融合

    最近在 小象学院 上知识图谱的课程 做了一些笔记 现整理了一下 1 什么是知识融合 将来自不同知识库的同一实体融合在一起 目标 融合各层面的知识 合并两个知识图谱 本体 需要确认的是 1 等价实例 实体的匹配 左右两个人是同一个人 sams
  • 在python中使用pyspark读写Hive数据操作 --转载

    1 读Hive表数据 pyspark读取hive数据非常简单 因为它有专门的接口来读取 完全不需要像hbase那样 需要做很多配置 pyspark提供的操作hive的接口 使得程序可以直接使用SQL语句从hive里面查询需要的数据 代码如下
  • Intent.addFlags() 启动Activity的20种flags

    前言 在使用startActivity时候出现异常 Caused by Android util AndroidRuntimeException Calling startActivity from outside of an Activi