`
que2010
  • 浏览: 71839 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activity的启动与通信

阅读更多

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");              
            }
       }
}

 

0
0
分享到:
评论

相关推荐

    启动服务并与activity通信

    两种方式启动service比较,activity与service通信

    Activity与Service之间通信

    Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity

    上海建桥学院-移动应用开发-实验报告2-Activity组件通信

    1、 完成启动界面的设计,要求采用合理布局,使界面效果与图1所示结果保持一致。( “男”单选按钮默认选中,学院下拉列表框的内容为:信息技术学院、外国语学院、机电学院、商学院、艺术设计学院、珠宝学院、新闻...

    详解Android Service与Activity之间通信的几种方式

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...

    Fragment 与Activity 通信

    Fragment 与Activity 通信,ViewPager,简单小例子 在配置文件里切换一下启动函数即可

    Android中Service与Activity之间通信的几种方式

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...

    Android Activity与Service通信(不同进程之间)详解

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,...

    通过实例解析android Activity启动过程

    注:只是说明启动activity的过程(ActivityThread如何与ActivityManagerService简称AmS进行进程间通信调用全过程),不解析android从zygote(受精卵)到整个系统服务的启动 具体来讲,启动activity的方式有以下几种...

    Android音乐播放器 (含源码及文档)

    掌握Service的启动和停止方式,掌握Activity与Service的通信,了解前台Service,掌握MediaPlayer的使用。 二、实验要求 1、练习Service的启动和停止方式 2、练习Activity与Service之间的通信 3、练习前台Service的...

    六、组件通信与广播消息-Android开发与实践

    了解使用Intent进行组件通信的原理 掌握使用Intent启动Activity的方法 掌握获取Activity返回值的方法 了解Intent过滤器的原理与匹配机制 掌握发送和接收广播消息的方法

    Socket实现Android进程间通信的小例子

    在后台启动一个Service,并使之运行在:remote进程中,另外一个Activity运行在原本的进程中,通过Socket来完成子进程remote中Service和主进程Activity之间的通信。 通信流程,Activity和Service进行进程间Socket连接...

    安卓移动应用开发:Intent与组件通信实现页面跳转功能实现

    - 在启动新的Activity时,需要使用`startActivity()` 方法将Intent传递给系统,系统会根据Intent中指定的类名或包名+类名来启动相应的Activity。 - 在使用Intent跳转时,需要确认清单文件中包名与Java包名是否一致...

    架构之占位式插件化框架 –组件通信

    文章目录Activity通信通过宿主来加载Plugin Activity1. 环境准备2. 加载3. 启动插件4. 插件Activity的生命周期插件内部 Activity 加载Service通信动态广播的使用 占位式,也叫插装式。运行的APP,也称之为宿主。 ...

    Android中进程之间通信的机制

    总结:跨进程访问Activity(访问其他应用程序中的Activity)主要是通过一个Action来完成的,如果要传递数据,还需要...如果要想从调用的Activity中返回数据,就需要使用startActivityForResult方法来启动Activity了。

    Activity代理框架AyoActivityNoManifest.zip

    目的在于在Activity之间传递参数时考虑序列化问题,适用于进程内通信提供了一个轻量级的OnActivityResult机制(OnResultCallback,使用方式基本和OnActivity不一样)状态栏一体化的简单封装Activity和Fragment状态...

    android开发技巧100条.docx

    Java/Kotlin基础:牢固掌握Java或Kotlin语言基础知识,因为它们是Android开发的主要编程语言。...Intent与启动模式:学会使用Intent进行组件间的通信和页面跳转,理解并掌握四种不同的Activity启动模式。

    Android IPC机制绑定Service实现本地通信

    **写作原因:跨进程通信的实现和理解是Android进阶中...相比第一种方式,bindService()能够更加灵活地实现与启动端Activity的数据通信,第一种启动方式启动Activity与Service之间并没有直接关联,难以直接实现通信(当

    Android 组件化开发module间通信

    module间Activity相互启动,传值方面直接看activityrouter官方文档https://github.com/mzule/ActivityRouter

    浅谈android性能优化之启动过程(冷启动和热启动)

    本文介绍了浅谈android性能优化之启动过程(冷启动和热启动) ,分享给大家,具体如下: 一、应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统...

    Android在后台最小化的多线程下载程序实例.rar

    service 与activity 之间的消息通信 既是activity向service发消息 需要实现ServiceConnection接口 绑定服务, 第一次启动BackStage的Activity时启动接收广播,需要知道当前SD卡的目录,Environment....

Global site tag (gtag.js) - Google Analytics