Android跨应用启动实例详解
Android跨应用启动
前言:
相信大家,很多时候都是在自己的应用中,启动自己写的Activity,Service、BroadcastReceiver、contentProvider 。换句话说,这些都只是 * 单个应用中 组件间 * 的启动。而我们下面要谈论的是 两个应用间 组件 的启动。即——使用 隐式Intent方式 启动应用B的某个组件。
一、在开始之前,先来梳理一下跨应用启动的2种方式:
第一种:在Activity中,启动另一个app的组件。
第二种:在Service中,启动另一个app的组件。
从所周知,Android中有四大组件,那么为什么小编,只介绍Activity和Service中启动另一个应用的四大组件?
其实,BroadcastReceiver组件也是可以启动 4大组件的。这是因为onReceive()方法中会要求传入context实例,有了context实例,就能使用context的方法,启动其他组件。
至于contentProvider,我想大家还没见过,这娃自动去干过事情吧,都是被动的调用。
所以在写代码的时候,我们经常会在Activity或者Service中去启动一个组件,BroadcastReceiver很少,而contentProvider更是没见过。
另外需要跟大家说一下,Context类是一个抽象类,传入的context实例是由其子类来实现的,这种——用父类声明变量,由子类来实现的思维方式,在Java中是很常见的。特别是接口和抽象类,经常用到这种方式。对于小编这种由C转Java的人来说,真是一大坑啊。
为什么Activity和Service都可以直接使用图中的四个方法呢,这是因为Activity和Service都是继承自ContextWrapper,所以子类拥有父类的方法。BroadcastReceiver和contentProvider则不是,具体大家可以看官方API。
二、跨应用启动的实战
** 下面让我们正式进入今天的主题:跨应用启动实战**
AppA的Activity中,启动AppB的Activity
Android提供了在一个App中启动另一个App中的Activity的能力,这使我们的程序很容易就可以调用其他程序的功能,从而就丰富了我们App的功能。比如在微信中发送一个位置信息,对方可以点击这个位置信息启动腾讯地图并导航。这个场景在现实中作用很大,尤其是朋友在陌生的环境找不到对方时,这个功能简直就是救星。
本来想把本文的名字叫启动另一个进程中的Activity,觉得这样才有逼格。因为每个App都会运行在自己的虚拟机中,每个虚拟机跑在一个进程中。但仔细一想,能够称为一个进程,前提是这个App必须要运行起来才行。而Android提供的能力,是不需要另一个App启动就可以将其特定的Activity启动起来的。
也就是说B应用是处理未启动的状态,也就是还没有成为系统的一个进程,那么当使用A启动B应用的某个组件时,请问,B应用是否成为系统的进程?答案是yes。怎么看呢,可以从Android Studio 的Android device monito 中结合虚拟机看。
我们有至少两种办法达到启动另一个App中的Activity。
第一种———隐式Intent的action方式。
相信这种方式,大家都不会陌生。这里就不进行过多的解析。这里只贴一下AppB的manifest(文件清单):
从文件清单中,我们可以看到,appB中有两个Activity。其中SecondActivity就是要被appA启动的Activity。
那么我们只要在appA的任意一个组件(Activity或Service),做如下的调用:
Intent intent=new Intent("android.intent.action.SecondActivity");startActivity(intent);
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Android跨应用启动实例详解
下载Word文档到电脑,方便收藏和打印~
猜你喜欢
Android跨应用启动实例详解
Android Activity启动模式之singleTask实例详解
Android Activity启动模式之singleTop实例详解
Android Activity启动模式之standard实例详解
Android 两种启动模式的实例详解
Android应用框架之应用启动过程详解
Linux启动与自启动的实例详解
Android应用启动白屏处理方案详解
Android应用App更新实例详解
Android TextView Marquee的应用实例详解
Android Dialog 动画实例详解
Android 应用启动欢迎界面广告的实现实例
Android使用ContentProvider实现跨进程通讯示例详解
Apache Cordova Android原理应用实例详解
android调用web service(cxf)实例应用详解
Android 跨进程模拟按键(KeyEvent )实例详解
编程热搜
Python 学习之路 - Python
一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-chatgpt的中文全称是什么
chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列C/C++可变参数的使用
可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃Python 3 教程
Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 PythonPython pip包管理
一、前言 在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install 和 pip , 目前官方推荐使用 pip。
编程资源站
- 资料下载
- 历年试题
目录
反馈
我要
反馈