前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android Service启动到Activity

Android Service启动到Activity

作者头像
程序员飞飞
发布于 2020-02-27 08:45:57
发布于 2020-02-27 08:45:57
3.4K00
代码可运行
举报
文章被收录于专栏:Android&Java技术Android&Java技术
运行总次数:0
代码可运行

Android Service启动到Activity

从Service启动到Activity基本可以分为两类: 1.从自己应用的Service启动自己应用的Activity,即显式意图; 2.从自己应用的Service启动到其他应用的Activity,或者从别的应用的Service启动到自己应用的Activity,即隐式意图;

1.显式意图启动

下面为示例写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	Intent intent = new Intent(EmqttService.this, CallingActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

2.隐式意图启动

需要在manifest.xml中为该Activity配置<intent-filter>标签,为其配置action和category

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <activity android:name=".CallingActivity" >  
            <intent-filter>  
                <action android:name="com.call"></action>  
                <category android:name="android.intent.category.DEFAULT"/>  
            </intent-filter>  
    </activity>  

在要启动的Service里这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	Intent i = new Intent("com.call");  
	i.addCategory(Intent.CATEGORY_DEFAULT);  
	i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
	startActivity(i);

注意“com.call”为要启动Activity的Action.

##3.为什么Android在Service 里面启动Activity要强制规定使用参数FLAG_ACTIVITY_NEW_TASK呢?

我们可以来做这样一个假设,我们有这样一个需求: 我们在电话本里面启动一个Service,然后它执行5分钟后,启动一个Activity 那么很有可能用户在5分钟后已经不在电话本程序里面操作了,有可能去上网,打开浏览器程序了。 5分钟后,此时当前的Task是浏览器的task,那么弹出Activity,如果这个Activity在当前Task的话,也就是浏览器的Task;那么用户就会觉得莫名其妙;因为弹出的Activity和浏览器在一个Task,本来这个Activity应该属于电话本的。 所以,对于Service而言,干脆强制定义启动的Activity要创建一个新的Task. 这种设计,我觉得还是比较合理的。

最后感谢参考文章:http://bbs.51cto.com/thread-1133875-1.html

Thanks all.

本文首发于我的微信公众号,更多干货文章,请扫描二维码订阅哦:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/04/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android拾萃- Activity的生命周期和启动模式
概述 Activity 作为与用户交互的一个窗口,是使用非常频繁的一个基本组件。Android系统是通过Activity栈来管理Activity的,而Activity则是通过哦生命周期来进行自己的创建
我就是马云飞
2018/02/05
1.7K0
Android拾萃- Activity的生命周期和启动模式
Android启动模式之singleTask解析「建议收藏」
在android应用程序中,最重要的组件之一Activity有4种启动模式,其中singleTask根据官方文档的描述很容易让人迷惑,主要是启动后所处的Task易让人困惑,其实原因在于,activity的启动方式除了受标签android:launchMode的影响之外,还会被启动参数所左右,比如intent的标志位FLAG_ACTIVITY_NEW_TASK,任务标签 android:taskAffinity。本文主要对singleTask和这些影响影响因素进行测试。
全栈程序员站长
2022/09/13
4.6K0
App相互唤醒的几种方式
下文皆使用Client表示操作的App,Server表示需要被唤起的远端App,Server的包名为“com.jxx.server”
Android技术干货分享
2019/03/27
2K1
App相互唤醒的几种方式
Android应用安装卸载监控
2、 修改AndroidManifest.xml配置文件,添加广播介绍,添加监听的权限
码客说
2020/09/03
9640
Android 开机自启动应用
Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED”
阳光岛主
2019/02/19
3.6K0
Android 开机自启动应用
Android实现开机自动启动APP
我们在开发的过程中,可能都会遇到要求开机自动启动一个APP这样的需求,于是就有了本文,看下文↓
程序员飞飞
2020/02/27
14.9K0
字节Android工程师都在学习的Activity与Activity调用栈,你都学习了?
以下几种情况下,Activity的生命周期会发生异常 1,资源相关的系统配置发生改变 比如,旋转屏幕,在默认状态下,Activity就会被销毁并且重新创建。
te大大
2021/11/16
4550
Activity 跳转详解
你好! 我是 Graydalf ,有可能也叫 Gdalf ~ 今天被朋友问到如何设置一个广播来启动一个应用并显示数据,于是将自己了解到的记录下来,有什么较为 DEMO 的地方希望你能留言告诉我,谢谢。
全栈程序员站长
2022/08/31
6550
意图Intent
对意图Intent,学习安卓需掌握。以官方链接:http://www.android-doc.com/reference/android/content/Intent.html 所有文字全靠打。
达达前端
2022/04/28
1K0
Android Intent用法总结
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的 Activity / Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
233333
2020/02/18
1.6K0
Android Intent用法总结
android intent打开各种格式文档方法
我们开发的时候经常碰到打开各种文档,目前的应用处理方式 基本都是依赖于三方软件打开 ,而不是在应用内打开,因为文件格式有很多,倘若都在应用内打开的话,肯定要增加很大的开发时间和开发成本,而且实现效果没有一些三方的app实现的效果好。
再见孙悟空_
2023/02/10
1K0
Activity启动模式
扩展:TaskAffinity(Activity想要的任务栈) 每个Activity都会有TaskAffinity参数,标识了Activity所需要进入的任务栈的名字。默认是包名,也就是当前应用下的任务栈。两种情况(其他情况没有意义):
胡飞洋
2020/07/22
1.1K0
Android应用实现开机自启动的一种较好的方式
一般怎么做呢,可能是简单的在AndroidManifest.xml中,里面的第一个启动的Activity中,如MainActivity中这样写一下,加上了"android.intent.category.HOME和DEFAULT属性:
杨永贞
2022/01/07
1.8K0
Android 四大组件之Activity
Hi,大家好,又见面啦,上一期我们讲了如何安装AS,是不是已经有小伙伴迫不及待的创建了自己的项目并开始尝试了呢?那么这一期我们主要为大家介绍Activity。作为Android的四大组件之一,Activity占据着非常重要的作用。本文将围绕Android的生命周期、启动模式、基本配置等方面进行介绍。
下码看花
2019/08/05
8910
Android 四大组件之Activity
Service 开机接受广播,启动服务的问题
Android 4.0 (其实在3.1的版本中Google已经给出了说明)无法接收开机广播的问题本身是因为,如果应用程序安装上始终没有被打开过,那么在Android启动时,该应用无法接收到开机时的系统广播android.permission.RECEIVE_BOOT_COMPLETED。
小小工匠
2021/08/16
9370
Intent的七大属性, ComponentName、  Action 、 Category 、 Data  、Type、  Extra  、Flags。
Action作为标识符,代表一个Intent,当一个Activity需要外部协助处理时,就会发出一个Intent,如果一个程序能完成相应功能,只要在intent-filter加上这个这个intent就可以了。 Data保存需要传递的数据格式,比如:tel:// Extras保存需要传递的额外数据。 Category表示Intent的种类,从android上启动Activity有多种方式,比如 程序列表、桌面图标、点击Home激活的桌面等等,Category则用来标识这些Activity的图标会出现在哪些启动的上下文环境里。
zhangjiqun
2024/12/16
1220
7.Activity
创建新的activity(活动) 新创建的activity,必须在清单文件中做配置,否则系统找不到,在显示时会直接报错 <activity android:name="com.itheima.createactivity.SecondActivity"></activity> 只要有以下代码,那么就是入口activity,就会生成快捷图标,写几个就会出现几个程序快捷方式 一个应用程序可以在桌面创建多个快捷图标。 activity的名称、图标可以和应用程序的名称、图标不相同 <intent-filt
六月的雨
2018/05/14
1.3K0
相关推荐
Android拾萃- Activity的生命周期和启动模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档