Android四大组件——Activity——Activity之间通信下
显式意图:一般是用于应用内组件跳转。(如从ActivityA跳转到ActivityB)
隐式意图:一半用于应用之间的跳转。(如从ActivityA跳转到拨号)
隐式意图跳转到百度:
只需将前面MainActivity中的Intent改为如下便可。
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
这里Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,常量值是:android.intent.action.VIEW.
然后通过Uri.parse("https://www.baidu.com")将一个网址字符串解析成一个Uri对象。再调用Intent的setData()方法将这个Uri对象传递进去。
setData()方法接收一个Uri对象,用于指定当前Intent正在操作的数据。
运行效果图:

隐式意图跳转到拨号
只需将前面MainActivity中的Intent改为如下便可。
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"));
startActivity(intent);
}
将action指定为Intent.ACTION_DIAL,这也是Android内置的动作。
运行效果如下:

点击MainActivity中的按钮,页面就跳转过来了。
界面间传递对象
首先创建一个User对象。让它实现Parcelable接口。
package com.kotlin.activitystudy; import android.os.Parcel;
import android.os.Parcelable;
/*
只要实现了 Parcelable 接口,一个类的对象就可以实现序列化并可以通过 Intent 和 Binder 传递。
*/
public class User implements Parcelable {
private String name;
private String age;
private String sex; public User(){ } public User(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
} protected User(Parcel in) { //从序列化后的对象中创建原始对象,按顺序读取后创建
name = in.readString();
age = in.readString();
sex = in.readString();
} public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) { //从序列化后的对象中创建原始对象
return new User(in);
}
@Override
public User[] newArray(int size) { //创建指定长度的原始对象数组
return new User[size];
}
}; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public int describeContents() {//返回当前对象的内容描述。如果含有文件描述符,返回 1,否则返回 0,几乎所有情况都返回 0
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) { //将当前对象按顺序写入序列化结构中,其中 flags 标识有两种值:0 或者 1;为 1 时标识当前对象需要作为返回值返回,不能立即释放资源,几乎所有情况都为 0
dest.writeString(name);
dest.writeString(age);
dest.writeString(sex);
}
}
修改MainActivity中的跳转代码:
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
User user = new User(username.getText().toString(),"18","女");
intent.putExtra("user",user);
startActivity(intent);
}
再修改MainActivity2中的接收代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
//接收传递过来的数据
Intent intent = getIntent();
if(intent != null){
User user = intent.getParcelableExtra("user");//获取user对象
if(user != null){
information.setText(user.getName()+user.getAge()+user.getSex()+"欢迎登陆");
}else {
information.setText("user为空!!!!!");
}
}else {
information.setText("没接收到任何数据");
}
}
代码都非常简单,来看看运行效果:


也可以实现Serializable接口传递。
Parcelable 与 Serializable 对比
- Serializable 使用 I/O 读写存储在硬盘上,而 Parcelable 是直接在内存中读写
- Serializable 会使用反射,序列化和反序列化过程需要大量 I/O 操作, Parcelable 自已实现封送和解封(marshalled &unmarshalled)操作不需要用反射,数据也存放在 Native 内存中,效率要快很多
部分内容转载自:https://www.jianshu.com/p/e8217c36cd9a
Android四大组件——Activity——Activity之间通信下的更多相关文章
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- Android四大组件及activity的四大启动模式
Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...
- Android 四大组件之 Activity(二)
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android 四大组件之 Activity(一)
1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...
- [Android基础]Android四大组件之Activity总结
1.Activity简介 Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口.在每个Activity中都可以放很多控件,所以也可以 ...
- Android 四大组件之Activity(续2)
1.生命周期 关于生命周期,在详细讲解下: 上图是从android官网获取的生命周期. 正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况. 1)OnResume->OnPause-> ...
随机推荐
- JavaScript 里的 'this' 的一般解释
本文旨在帮助自己和大家理解 JS 里的 this, 翻译.整理并改写自本人关注的一个博主 Dmitri Pavlutin,原文链接如下: https://dmitripavlutin.com/gent ...
- Pytorch自动混合精度(AMP)介绍与使用
背景: pytorch从1.6版本开始,已经内置了torch.cuda.amp,采用自动混合精度训练就不需要加载第三方NVIDIA的apex库了.本文主要从三个方面来介绍AMP: 一.什么是AMP? ...
- httpRunner使用小结
1.每个系统可以给所有相关接口准备一份完整的主流程数据,这样就不用每执行一条用例就要先执行很多前置用例2.每条用例在设计之初,关于使用的前置数据,以及条件判断的数据值,以及设置的前提条件数据值,尽量保 ...
- Redis 常见的性能问题都有哪些?如何解决?
Redis 常见的性能问题都有哪些?如何解决? Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最 ...
- 什么是 spring bean?
它们是构成用户应用程序主干的对象. Bean 由 Spring IoC 容器管理. 它们由 Spring IoC 容器实例化,配置,装配和管理. Bean 是基于用户提供给容器的配置元数据创建.
- 学习Apache(一)
实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...
- js中DOM事件探究
事件 纲要 理解事件流 使用事件处理程序 不同的事件类型 javascript和html的交互是通过事件实现的.事件就是文档或浏览器窗口发生的一些特定交互瞬间.可以使用侦听器(事件处理程序)预定事件, ...
- python-筛法求素数
[题目描述]用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数. [练习要求]请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释. [输入格式 ...
- 百度图像识别SDK实验
软件构造实验作业 实验名称:百度图像识别SDK实验 班级:信1905-1 学号:20194171 姓名:常金悦 一. 实验要求 每个步骤必须截图并说明 二.实验步 ...
- java中抽象类和抽象方法到底什么关系?请举例说明!
抽象类和抽象方法什么关系?抽象类中可能有抽象方法,也可能没有抽象方法.那位说,就跟没说一样,那抽象类和抽象方法都叫抽象,他们必定有关系,那关系是什么呢?如果一个类中有抽象方法,它必须得是抽象类. An ...