Activity详解

  • 什么是Activity

    • Android提供的四大组件(activity、service、contentprovider、broadcast receiver)之一。它是一个界面的载体(内含各种控件),不妨理解为web开发中的html文件(含各种标签)。当然,Activity远远没有这么简单,不妨看一下源代码。作为一个继承的类,它的源码达到了7000行,这是由于Activity封装了很多方法给开发者使用。当然,初学者不需要知道这些底层的东西。
  • Activity的生命周期
    • 这是官方参考文档里的图。

    • 不难看出,当这个activity第一次创建出现时是oncreate方法调用了,直到这个Activity被销毁。当然,我们一般大量的刷新类型的业务处理是放在onresume这个方法实现。(因为create只会在activity创建时调用一次,除非销毁才会再次调用,这是开销比较大的,一般不这么做)
  • 下面代码尝试调用所有的方法,明确生命周期。
    • 代码测试

      •   package com.zc.helloworld;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button btn;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.e("info","MainActivity onCreate()");}@Overrideprotected void onStart() {super.onStart();Log.e("info","MainActivity onStart()");}@Overrideprotected void onResume() {super.onResume();Log.e("info","MainActivity onResume()");}@Overrideprotected void onPause() {super.onPause();Log.e("info", "MainActivity onPause()");}@Overrideprotected void onStop() {super.onStop();Log.e("info", "MainActivity onStop()");}@Overrideprotected void onDestroy() {super.onDestroy();Log.e("info","MainActivity onDestroy()");}@Overrideprotected void onRestart() {super.onRestart();Log.e("info","MainActivity onRestart()");}}
        
    • 演示结果
      • 当初次打开App时
      • 当home键最小化App时
      • 当回到未被后台销毁的APP时
      • 当退出且关闭App时
      • 从上面的情况,不难看出生命周期的运转过程。
  • 常用的Activity
    • 在开发中,不可避免要写很多的Activity,但是为了方便,谷歌已经封装了很多实用的牵涉底层的Activity。
    • 代码测试
      •   package com.zc.helloworld;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button btn1,btn2,btn3,btn4;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1 = (Button) findViewById(R.id.btn1);btn2 = (Button) findViewById(R.id.btn2);btn3 = (Button) findViewById(R.id.btn3);btn4 = (Button) findViewById(R.id.btn4);context = this;btn1.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);}});btn2.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivity(intent);}});btn3.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT,"Hello World!");startActivity(intent);}});btn4.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse("tel:10086"));startActivity(intent);}});}}
        
    • 演示结果
  • Activity之间的数据交互
    • 一般用intent传递。(内存数据)
    • 代码测试
      • MainActivity.java(将这个Activity的textview数据传到下一个Activity)

        •   package com.zc.helloworld;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity {private Button btn1;private TextView tv;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context = this;btn1 = (Button) findViewById(R.id.btn1);tv = (TextView) findViewById(R.id.tv1);btn1.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Intent intent = new Intent(context,Main2Activity.class);String data = (String) tv.getText();intent.putExtra("data",data);startActivity(intent);}});}}
          
      • MainActivity2.java
        •   package com.zc.helloworld;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class Main2Activity extends AppCompatActivity {private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);tv = (TextView) findViewById(R.id.tv2);Intent intent = getIntent();if(intent!=null){String data = intent.getStringExtra("data");tv.setText(data);}}}
          
    • 演示结果
      • 当然,更多类型,更加复杂的数据可以用Bundle绑定一起传递。
  • 补充说明
    • 实际开发中必须要处理好Activity和Context的关联。

安卓入门系列-08四大组件之Activity相关推荐

  1. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

  2. 安卓入门系列-09一个实战小项目(备忘录Memo)

    一个简单的安卓平台下的备忘录 背景 之前已经介绍了不少的控件(TextView和ListView等等)以及开发中最常见的组件(Activity)(Service的权重在我心中没有Activity重要, ...

  3. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  4. Android四大组件之Activity(第一篇-简单使用)

    Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...

  5. Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti

    Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.然后重点提到Activi ...

  6. Android基础再回首——四大组件之Activity、Service俩兄弟

    Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...

  7. 【Android 四大组件之Activity】一文吃透Activity 生命周期

    作者:半身风雪 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收 ...

  8. 第一章 四大组件 之 Activity(一)

    文章目录 第一组件 Activity (一)Activity生命周期 1.生命周期五大状态 2.生命周期流程 3.常见场景的生命周期调用方式 4.具体场景生命周期调用方式 (1)横竖屏切换对Activ ...

  9. 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider

    文章目录 Activity 生命周期 onCreate和onStart的区别 onPause和onStop的区别 生命周期的变化 Activity的启动 Intent Bundle Activity携 ...

最新文章

  1. PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换
  2. 这类程序员成华为宠儿,分分钟秒杀众应届毕业生
  3. 十条不错的编程观点(转载)
  4. 华为将操作系统“装入”海尔
  5. EntityFramework Core映射关系详解
  6. 综述 | 卷积神经网络表征可视化研究
  7. QT编译boost库
  8. Android仿人人客户端(v5.7.1)——网络模块处理的架构
  9. Tomcat 8默认工具manager管理页面访问配置
  10. 电子烟行业的十大进销存软件app,强推第一个
  11. POST注入-显错注入 ——合天网安实验室学习笔记
  12. 《程序人生》2020无畏年少青春,迎风潇洒前行,杭漂程序员2019的心路历程,披荆斩棘终雨过天晴
  13. 1094: 【基础】填词 【循环】
  14. 活动报名丨AI ProCon 2020火爆来袭!
  15. 排列组合 、牛顿二项式定理、多项式系数
  16. cad角度怎么画_软件CAD | 直线amp;构造线
  17. Mybatis 报错Mapper method ‘xxx‘ has an unsupported return type,解决办法
  18. PDM,读《长尾理论》
  19. 如何判断List 集合和Map 集合是否为空
  20. 计算机组成原理 第三章存储系统 知识点

热门文章

  1. 为什么要用Dubbo-远程通信背景
  2. MIME Type描述消息内容类型的因特网标准
  3. 用户注册 - 判断用户名存在
  4. RocketMQ各种集群模式介绍
  5. 创建工程并测试RedisTemplate
  6. (常用API)正则表达式的概念和作用
  7. sqoop导入-hive
  8. InvalidClassException异常_原理和解决方案
  9. 工程搭建:搭建子工程之搭建实体类模块和lombok插件
  10. php制作随机地图,随机生成Roguelike游戏地图算法