Activity是Android组件中最基本也是最常见的组件,一般情况下一个Activity就是对应一个单独的屏幕。
注:一下代码中父Activity用parent表示,子Activity用child表示(子Activity对应的Java文件为child.java)。
一.启动Activity
要启动一个新的Activity,有以下三个步骤(在父Activity中执行)
1.新建一个Intent(有两种方法)
方法①:
Intent intent = new Intent();
intent.setClass(parent.this, child.class);
方法②:
Intent intent = new Intent(parent.this, child.class)
2.启动Activity(有两种方法)
方法①:
startActivity(intent);
方法②:
startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数
以上两个方法的差异在于可以在方法②启动的Activity关闭时,回调数据给启动它的父Activity,进而实现Activity之间的通信。(稍后将会讲述)
3.在AndroidManifest.xml文件中注册Activity
在AndroidManifest.xml文件下的“<application></application>”标签之间填入一个新的<activity>标签,例:
<activity
android:name=".child" >
</activity>
其中,<activity>标签里可以加入“android:them”属性来设置该Activity的样式。
二.Activity之间的通信
Activity之间有两种通信方式
方式①:父Activity向子Activity传递信息
//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivity(intent);
//在子Activity中获取数据
String msg = this.getIntent().getExtras().getString("msg");
方式②:子Activity关闭后,要回调数据给父Activity
//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数
//在子Activity关闭时
Intent intent = getIntent();
Bundle bundle = new Bundle();
bundle.putString("msg",msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
setResult(RESULT_OK,intent);
finish();
//在父Activity中加入onActivityResult函数,以接收回调的信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data_intent){
super.onActivityResult(requestCode, resultCode, data_intent);
if(resultCode == RESULT_CANCELED)
setTitle("cancel");
else if (resultCode == RESULT_OK){
Bundle bundle = data_intent.getExtras();
if(bundle != null){
//获取子Activity传送的数据
String msg = bundle.getString("msg");
}
}
}
分享到:
相关推荐
两种方式启动service比较,activity与service通信
Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity
1、 完成启动界面的设计,要求采用合理布局,使界面效果与图1所示结果保持一致。( “男”单选按钮默认选中,学院下拉列表框的内容为:信息技术学院、外国语学院、机电学院、商学院、艺术设计学院、珠宝学院、新闻...
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...
Fragment 与Activity 通信,ViewPager,简单小例子 在配置文件里切换一下启动函数即可
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...
注:只是说明启动activity的过程(ActivityThread如何与ActivityManagerService简称AmS进行进程间通信调用全过程),不解析android从zygote(受精卵)到整个系统服务的启动 具体来讲,启动activity的方式有以下几种...
掌握Service的启动和停止方式,掌握Activity与Service的通信,了解前台Service,掌握MediaPlayer的使用。 二、实验要求 1、练习Service的启动和停止方式 2、练习Activity与Service之间的通信 3、练习前台Service的...
了解使用Intent进行组件通信的原理 掌握使用Intent启动Activity的方法 掌握获取Activity返回值的方法 了解Intent过滤器的原理与匹配机制 掌握发送和接收广播消息的方法
在后台启动一个Service,并使之运行在:remote进程中,另外一个Activity运行在原本的进程中,通过Socket来完成子进程remote中Service和主进程Activity之间的通信。 通信流程,Activity和Service进行进程间Socket连接...
- 在启动新的Activity时,需要使用`startActivity()` 方法将Intent传递给系统,系统会根据Intent中指定的类名或包名+类名来启动相应的Activity。 - 在使用Intent跳转时,需要确认清单文件中包名与Java包名是否一致...
文章目录Activity通信通过宿主来加载Plugin Activity1. 环境准备2. 加载3. 启动插件4. 插件Activity的生命周期插件内部 Activity 加载Service通信动态广播的使用 占位式,也叫插装式。运行的APP,也称之为宿主。 ...
总结:跨进程访问Activity(访问其他应用程序中的Activity)主要是通过一个Action来完成的,如果要传递数据,还需要...如果要想从调用的Activity中返回数据,就需要使用startActivityForResult方法来启动Activity了。
目的在于在Activity之间传递参数时考虑序列化问题,适用于进程内通信提供了一个轻量级的OnActivityResult机制(OnResultCallback,使用方式基本和OnActivity不一样)状态栏一体化的简单封装Activity和Fragment状态...
Java/Kotlin基础:牢固掌握Java或Kotlin语言基础知识,因为它们是Android开发的主要编程语言。...Intent与启动模式:学会使用Intent进行组件间的通信和页面跳转,理解并掌握四种不同的Activity启动模式。
**写作原因:跨进程通信的实现和理解是Android进阶中...相比第一种方式,bindService()能够更加灵活地实现与启动端Activity的数据通信,第一种启动方式启动Activity与Service之间并没有直接关联,难以直接实现通信(当
module间Activity相互启动,传值方面直接看activityrouter官方文档https://github.com/mzule/ActivityRouter
本文介绍了浅谈android性能优化之启动过程(冷启动和热启动) ,分享给大家,具体如下: 一、应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统...
service 与activity 之间的消息通信 既是activity向service发消息 需要实现ServiceConnection接口 绑定服务, 第一次启动BackStage的Activity时启动接收广播,需要知道当前SD卡的目录,Environment....