安卓入门系列-08四大组件之Activity
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);}}}
- MainActivity.java(将这个Activity的textview数据传到下一个Activity)
- 演示结果
- 当然,更多类型,更加复杂的数据可以用Bundle绑定一起传递。
- 补充说明
- 实际开发中必须要处理好Activity和Context的关联。
安卓入门系列-08四大组件之Activity相关推荐
- 【Android】安卓四大组件之Activity(一)
[Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...
- 安卓入门系列-09一个实战小项目(备忘录Memo)
一个简单的安卓平台下的备忘录 背景 之前已经介绍了不少的控件(TextView和ListView等等)以及开发中最常见的组件(Activity)(Service的权重在我心中没有Activity重要, ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之Activity(第一篇-简单使用)
Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.然后重点提到Activi ...
- Android基础再回首——四大组件之Activity、Service俩兄弟
Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...
- 【Android 四大组件之Activity】一文吃透Activity 生命周期
作者:半身风雪 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收 ...
- 第一章 四大组件 之 Activity(一)
文章目录 第一组件 Activity (一)Activity生命周期 1.生命周期五大状态 2.生命周期流程 3.常见场景的生命周期调用方式 4.具体场景生命周期调用方式 (1)横竖屏切换对Activ ...
- 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider
文章目录 Activity 生命周期 onCreate和onStart的区别 onPause和onStop的区别 生命周期的变化 Activity的启动 Intent Bundle Activity携 ...
最新文章
- PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换
- 这类程序员成华为宠儿,分分钟秒杀众应届毕业生
- 十条不错的编程观点(转载)
- 华为将操作系统“装入”海尔
- EntityFramework Core映射关系详解
- 综述 | 卷积神经网络表征可视化研究
- QT编译boost库
- Android仿人人客户端(v5.7.1)——网络模块处理的架构
- Tomcat 8默认工具manager管理页面访问配置
- 电子烟行业的十大进销存软件app,强推第一个
- POST注入-显错注入 ——合天网安实验室学习笔记
- 《程序人生》2020无畏年少青春,迎风潇洒前行,杭漂程序员2019的心路历程,披荆斩棘终雨过天晴
- 1094: 【基础】填词 【循环】
- 活动报名丨AI ProCon 2020火爆来袭!
- 排列组合 、牛顿二项式定理、多项式系数
- cad角度怎么画_软件CAD | 直线amp;构造线
- Mybatis 报错Mapper method ‘xxx‘ has an unsupported return type,解决办法
- PDM,读《长尾理论》
- 如何判断List 集合和Map 集合是否为空
- 计算机组成原理 第三章存储系统 知识点