Android四大核心组件之Activity
一、活动生命周期

二、生命周期执行介绍
当该页面(Activity)被启动时
会执行onCreate()、onStart()、onRestart()这三个方法,
只有当onRestart() 方法执行完后才会处于一个运行状态(Activity running)
如果另外一个activity 跑到当前正在执行的activity前面了,我们当前的activity就会执行onPause()方法,比如来电话了长按Home键的情况。
如果从onPause()方法返回到activity页面的时候,会执行一次onResume(),再回到activity。
如果页面从活动状态,变为不可见状态时,也就是停止状态时候,
会执行onPause()方法后再执行onStop()方法。
如果从onStop()方法处返回到页面时,
会执行一个onRestart()方法后执行onStart()方法接着再执行onResume()方法后回到页面。
注意:如果处于onStop()或者onPause()方法时候,页面由于手机内存低、或者被其他软件杀掉的时候,
再返回页面时候,会从onCreate()方法开始执行,接着onRestart()、onStart()、onResume()
onDestroy()方法,被系统关闭的时候或者手动的时候才会执行,执行完这个方法后,我们的activity就被彻底关闭了。
三、Activity方法定义
活动的整个生命周期由以下Activity方法定义。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
四、Activity样式修改
通过添加activity中theme参数可以修改界面的样式,

如下两个图,可以看出添加theme样式后菜单栏改没了,当然样式可以选择其他的,会有不同效果。


五、Activity的创建与切换
1.首先新建一个activity页面,
用的Android studio,建的比较快,
如果用eclipse的话需要先创建一个类,并且扩展至Activity,
然后在AndroidManifest.XML中配置添加页面,
<activity android:name=".Main2Activity"></activity>
还要在layout中新建一个内容布局,并且在创建的类中的onCreate方法中绑定它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
这里我直接通过Android studio创建,省略以上步骤。

2.在activity1视图中创建一个标签和一个按钮
注意ID的写法,自定义ID得加上@+/


接着回到视图A类,
编写以下代码

执行效果如下,点击后跳转到第二个页面


六、如何关闭掉一个activity
设计如下,在第二个页面中拖入一个按钮,把当前activity关闭掉
private Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btnButton =findViewById(R.id.btnClose);
btnButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
点击关闭后回到页面一


七、activity数据的传送
设计思路:在页面二中创建一个标签,用来接收来自页面一的数据,
然后通过按钮“启动第二个页面”把数据带到页面二。
1.通过putExtra方法和getStringExtra方法实现简单的数据传送。



2.通过Bundle传送复杂类型数据


执行效果也是一样 的。
八、activity关闭后数据的回调
当页面二activity关闭的时候,从页面二把数据传回,然后从页面一获得数据并显示到页面一。
在页面一想得到一面二传回来的数据,这里就不能用startActivity方法,
要改用startActivityForResult函数。

并且重载onActivityResult方法,下图中通过data.getStringExtra得到视图二返回的参数

下图为视图二,这里在finish之前使用setResult将参数传回

测试如下,先进入视图一,下图中TextView 是默认值,当前没有收到返回值

接着点击启动第二个页面

然后点击关闭,这里可以看到已经得到了从页面二返回的数据

九、用到的部分源码
package com.ali.application.mytest; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; import org.w3c.dom.Text; public class MainActivity extends AppCompatActivity { private Button S2;//定义一个按钮
private TextView tRe;//定义一个标签 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); S2=findViewById(R.id.S2);//通过findViewById查找视图中按钮 tRe=findViewById(R.id.tRe); S2.setOnClickListener(new View.OnClickListener() {//设置一个事件监听器
@Override
public void onClick(View view) {
//启动页面2
Intent i = new Intent(MainActivity.this,Main2Activity.class);
//i.putExtra("val","mytest");
Bundle data=new Bundle();
data.putString("val","myTest");
i.putExtras(data);
// startActivity(i);//要取得返回值的话不能用这个函数
startActivityForResult(i,0);//这里的0对应onActivityResult方法中的requestCode }
});
System.out.println("Create");
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { String re=data.getStringExtra("val"); tRe.setText(re); super.onActivityResult(requestCode, resultCode, data);
} @Override
protected void onStart() {
super.onStart();
System.out.println("start");
} @Override
protected void onResume() {
super.onResume();
System.out.println("resume");
} @Override
protected void onPause() {
super.onPause();
System.out.println("pause");
} @Override
protected void onStop() {
super.onStop();
System.out.println("stop");
} @Override
protected void onDestroy() {
super.onDestroy();
System.out.println("destroy");
} @Override
protected void onRestart() {
super.onRestart();
System.out.println("restart");
}
}
package com.ali.application.mytest; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class Main2Activity extends AppCompatActivity { private Button btnButton;
private TextView tOut;//定义一个标签 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2); btnButton =findViewById(R.id.btnClose);
btnButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { Intent i = new Intent();
i.putExtra("val","testResult");
setResult(0,i);
finish();
}
}); tOut = findViewById(R.id.tOut); //tOut.setText(getIntent().getStringExtra("val")); Bundle data=getIntent().getExtras();
tOut.setText(data.getString("val")); }
}
Android四大核心组件之Activity的更多相关文章
- [转]Android四大核心组件:Activity+Service+BroadcastReceiver+ContentProvider
原文地址:http://c.biancheng.net/view/2918.html Android 作为一个移动设备的开发平台,其软件层次结构包含操作系统 (OS).中间件 (MiddleWare) ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件及activity的四大启动模式
Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...
- Android 四大组件之 Activity
1 简介 Activity (活动) 即应用程序 显示的 界面.可以通过两种方式 设置显示的内容 1:纯代码方式 2:xml 布局方式 无论哪一种方式,都是通过 setContentView 来设置显 ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android 四大组件之 Activity(二)
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...
随机推荐
- sql server 查看版本
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'),SERVERPROPERTY ('edition') ...
- 手机端实现6位短信验证码input输入框效果(样式及代码方法)
微信移动端4位.6位.多位验证码密码输入框功能的实现代码,实现思路: 方案1: 写一个简单的input框. 评估:样式不好看,待定. 方案2: 就是用6个input框,每输入一个数字之后,切换到下一个 ...
- shiro之IniRealm
Shiro认证过程 创建SecurityManager--->主体提交认证--->SecurityManager认证--->Authenticsto认证--->Realm验证 ...
- 《windows核心编程系列》五谈谈线程基础
线程基础 与前面介绍的进程一样,线程也有两部分组成.一个是线程内核对象.它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息.另一个是线程栈,用于维护线程执行时所需的所有函数参数和 ...
- _bzoj2243 [SDOI2011]染色【树链剖分】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 裸的树链剖分,最开始我保存一个线段树节点的color值时(若有多种颜色则为-1),不小 ...
- *关于TCP长连接,NAT超时,心跳包
参考: http://www.jianshu.com/p/584707554ed7 1.TCP长连接 TCP连接建立后只要不明确关闭,逻辑上连接一直存在. TCP是有保活定时器的,可以打开保活定时器来 ...
- 最简单的struts实例介绍
struts2环境配置 struts2框架,大多数框架都在使用.由于工作需要,开始做Java项目.先学个struts2. 一.下载struts2 有好多版本,我下载的是struts-2.2.1.1 ...
- AJPFX总结关于JVM的基础知识
写在前面 之前老大让做一些外包面试,我的问题很简单: 介绍一下工作中解决过比较 有意思的问题. HashMap使用中需要注意的点. 第一个问题主要是想了解一下对方项目经验的含金量,第二个问题则是测试下 ...
- Mac 为啥不显示图片尺寸,点了显示简介也不显示~???
这个问题困扰我好几天,然后今天想法子解决,我这个强迫症患者是真的难受,不能直接一目了然的,每次都要ps打开图片去看,真的好心累???? 网上98%的解决方法如下: 在 Finder 中,按快捷键 co ...
- (Android MVVM)使用Data Binding Library(2)
复习 上一篇学到了如何在layout.xml文件中增加元素,实现数据绑定,本篇接着学习. 事件处理 在layout.xml上绑定事件有两种方法,各有千秋. 1.方法引用 2.监听绑定 1.使用方法引用 ...