Activity的xml配置

Activity在使用时候必须在xml中设置,否则在启动Activity时候会找不到当前的类。下面配置是常用的作为程序入口的Activity配置。如下设置后,点击应用启动图标,第一个启动的就是当前Activity。

        <activity
            android:name=".MainActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@style/horizontal_slide"><!--intent消息过滤用来,此处标记用来接收系统的启动请求--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
启动一个Activity

一般情款下,Activity使用intent启动,启动方法如下:

Intent intent = new Intent(MyActivity.this, MyOtherActivity.class);
startActivity(intent);

除此以外,Activity还有隐式启动的方式:

隐式Intent是一种让匿名应用程序组件服务动作请求的机制。创建一个新的隐式Intent时,你要指定要执行的动作,以及这个动作所需要的数据。然后手机上能够执行此动作的应用回来响应这个动作。

当你使用这个新的隐式Intent来启动Activity时,Android会在运行时解析它,找到最适合在指定的数据类型上执行动作的类。这意味着,你可以创建使用其它应用程序的工程,而不需要提前精确地知道你会借用哪个应用程序的功能。

//Activity会在运行时候解析,调用所有能够执行这个动作的程序。这里启动的是一个打电话程序
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:555-2368”));
startActivity(intent);
Activity简单生命周期

Activity的常用生命周期包括以下几个:

  • onCreate():Activity创建时候调用。生命周期第一个方法,一般做一些初始化操作。
  • onStart():表示Activity正在启动,当前Activity处于可见状态,但还不可交互(编辑)。
  • onResume():表示Activity已经可以编辑,Activity处于可交互状态。
  • onRestart():一个未被销毁的Activity重新显示出来时候回回调这个方法。一般是调用顺序会是:onRestart()->onStart()->onResume()
  • onPause():当Activity市区焦点(不可编辑)时调用,一般情况下onStop方法会紧接着被回调。
  • onStop():一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行
  • onDestory():Activity正在被销毁,也是生命周期的最后一个方法。
  • onNewInstent():非默认模式时,启动一个已存在的Activity时候,会先调用这个方法。需要在此方法中更新intent,否则getIntent()会一直获取旧的intent。
Activity的启动方式

在一下基础的android岗位中,android中有哪些常见的启动方式,是面试的常见问题之一。现在我总结下:

android有如下四种启动方式,他们所对应的状态如下:

  • singleTop

    如果一个Activity已经存在,并且处于任务栈的栈顶。那么再启动这个Activity时不会创建新的实例,而是直接调用当前Activity的onNewIntent()方法,启动。

    具体的生命周期是onNewIntent()->onResume()

  • singleTask

    栈内唯一的启动方式。如果任务栈中已经存在当前Activity,那么直接启动当前Activity,不创建新的实例。同事在当前Activity栈之上的Activity会被移除。可以用来设置主页面。每次返回首页时候,结束所有Activity。

    具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

  • singleInstance

    在一个新的栈中打开一个Activity。可以用来共享Activity。如在一个应用中创建了一个Activity,然后在另一个应用中页可以再以这个模式建立这个Activity时,不会重复创建。

    具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

  • standard(默认)

    默认的模式,每次新建Activity时候都会在栈中加入一个Activity。

    具体生命周期调用是onCreate()->onStart()->onResume()

Activity之间值传递
  • 启动Activity时通过intent传值。

    启动Activity时候传值:

    Intent intent = new Intent(context,OtherActivity.class);
    intent.putExtra("key","value");
    context.startActivity(intent);

    在OtherActivity中获取所传值:

    String value = getIntent().getStringExtra("key");
  • 在Activity的onActivityResult()方法中获取回传的值。

    通过startActivityForResult()方法启动Activity

    //此处设置的请求码为111
    startActivityForResult(new Intent(context,OtherActivity.class),111);

    在当前Activity重写onActivityResult()方法获取回传值:

      @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//如果请求码相符,且返回值为正确值,则取值if (requestCode == 111 && resultCode == Activity.RESULT_OK) {data.getStringExtra("key");}}

Activity详解—— Activity基本用法相关推荐

  1. Activity详解Activity的使用步骤、生命周期及其启动模式、启动方法

    开始我们先来回顾一下Activity的基础知识: Activity是应用程序的表现层,应用程序中可以包含多个Activity,它们之间可以相互跳转,来达到手机屏幕的切换.Activity通过View来 ...

  2. [安卓基础] 009.组件Activity详解

    组件Activity详解 这篇文章学到得内容 1.什么是Activity 2.Activity的生命周期 3.如何保存Activity的状态 4.Activity之间切换时,相互之间生命周期的执行顺序 ...

  3. Android9.0 Launcher启动Activity详解(一)

    一.开始 Launcher中点击应用图标启动Activity,其开始方法是 public boolean startActivitySafely(View v, Intent intent, Item ...

  4. slf4j log4j logback关系详解和相关用法 【by Sinte-Beuve】

    slf4j log4j logback关系详解和相关用法 slf4j log4j logback的关系 The Simple Logging Facade for Java是什么? log4j和log ...

  5. 【English】 详解 祈使句的用法

    [English] 详解 祈使句的用法 祈使句的定义: 定义:用于表达命令.请求.劝告.警告.禁止 等得句子叫做祈使句.祈使句最常用于表达命令, 因此也常称为命令句. 如: Get out of he ...

  6. cut最后几位 shell_详解Shell cut用法

    详解Shell cut用法 cut是以每一行为一个处理对象的,这种机制和sed一样. cut接受三个定位方法: 1)byte: -b 2)characters: -c 3)fields: -d eg: ...

  7. js中childNodes易错点、详解定义以及用法

    js中childNodes易错点.详解定义以及用法 最近学习的时候,我遇到了childNodes的一些问题,我查阅了一些资料,总结一下其定义及用法.在学习childNodes之前,我们需要先了解一下D ...

  8. vue template html属性,详解template标签用法(含vue中的用法总结)

    一.html5中的template标签 html中的template标签中的内容在页面中不会显示.但是在后台查看页面DOM结构存在template标签.这是因为template标签天生不可见,它设置了 ...

  9. Android 之 Activity 详解

    最近在学习Android开发方面的知识,整理了一下关于Android中Activity方面的知识,也算是对自己学的知识进行了总结.Activity 在 Android开发中有着极其重要的位置,Acti ...

最新文章

  1. 数学图形(1.10) 双曲线
  2. 微服务网关哪家强?一文看懂Zuul, Nginx, Spring Cloud, Linkerd性能差异
  3. js中的window.onload和jquery中的load区别的讲解
  4. markdown下编辑latex数学公式
  5. 每天学一点ubuntu指令
  6. 从 Pod 到案例,给小白的 Kubernetes 技术课
  7. [HNOI2016]网络
  8. Matlab 批量读取,处理及保存图片
  9. 140、SFP+光模块如何与交换机搭配使用?四种方式常用!
  10. python计算方位角_python如何计算方位角 python计算方位角代码实例
  11. 智能手机业务的最新发展趋势
  12. 应用宝shangjia安全评估报告_腾讯应用宝市场的app 安全评估报告怎么写
  13. 「滑板+EdgeBoard 竟能搭出AI质检流水线?」“软件杯”全国一等奖团队参赛心得...
  14. 360浏览器下载文件时二次提交请求
  15. Ubuntu和windows系统下安装odoo16 社区版和企业版附带安装视频
  16. 苹果pencil值得买吗?苹果平板电容笔推荐
  17. 从零开始实现太阳公转AR项目(swift)
  18. 学习笔记——使用Unity Network组件开发联机游戏
  19. UG后处理—进给速度R模式输出研究
  20. 2019浙江C语言二级答案,2018年浙江省计算机二级c语言考试真题及答案

热门文章

  1. MMoE论文中Synthetic Data生成代码(控制多任务学习中任务之间的相关性)
  2. 毕业季 拍大师教你制作另类毕业视频
  3. P2P 技术如何降低实时视频直播带宽
  4. 风电功率预测matlab,MatlAB毕业论文:风电功率预测问题.doc
  5. Leetcode——岛屿问题
  6. p2p android端口,[收藏] 常见p2p软件端口、IP
  7. 客户端访问https时应无浏览器(含终端)安全警告信息;_可防范勒索病毒,互联网隔离安全技术的5个技能包...
  8. 淘宝订单批量核对自动插旗软件(完全免费)
  9. Cilantro 点云处理库
  10. 2012Android开发热门资料(110个)