Android——Activity的简绍
Activity
Activity的运行机制其实和JavaEE中的servlet很像,而我们的Android系统也就相当与其servlet容器,Activity在其中进行创建实例、初始化、运行、销毁等等过程全都是由容器来调用的。
Activity的生命周期

以上图就可以说明activity的生命周期。其中Activity生命周期的的三大状态:
运行状态
也就是当Activity在屏幕的最前端时候,它是可见、有焦点的,可以用来处理用户的常见操作(如点击、长按等事件)
暂停状态
这个状态下,Activity还是可见的,但是已经失去了焦点,用户不能进行操作,如弹框时,主页面仍是可以见的,只是不能操作而已。但是如果内存不足时,有可能会被kill掉。
停止状态
此时,Activity是完全不可见得,但是仍然会保留当前状态和成员信息。也有可能被Kill。
*具体的说明一下Activity的生命周期的流程:
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
简单的传递参数
通过Bundle对象来传递
其中的bundle就像数据的“袋子”一样,通过bunble来传递。
例子:
main1:简单的输入框+提交按钮
Main2:一个TextView来显示
在main1中
按钮添加一个点击事件:sendClick
其中的editText_info 是输入框(获取id)
private EditText editText_info;
editText_info = (EditText) findViewById(R.id.editText_info);
public void sendClick(View view){
//创建意图(Intent)
Intent intent = new Intent(this,MainActivity2.class);
String info =editText_info.getText().toString();
//创建Bundle,作为数据容器
Bundle data = new Bundle();
data.putString("info",info);
intent.putExtra("data",data);
startActivity(intent);
}
在main2中
TextView来接收数据
private TextView textView;
textView = (TextView) findViewById(R.id.textView_js);
Intent intent = getIntent();
Bundle data = intent.getBundleExtra("data");
String info = data.getString("info");
textView.setText(info);
传递对象
两种方法:(Serializable)(Parcelabel)推荐使用parcelable
序列化(Serializable)原生的io 缺点就是性能低
public void sendObjClick(View view){
//创建传递的对象
Cat cat = new Cat();
cat.name="小喵";
cat.age=2;
cat.type="英国短尾";Intent intent = new Intent(this,MainActivity2.class);
intent.putExtra("cat",cat);
startActivity(intent);
}Cat.java 实现serializable接口
public class Cat implements Serializable {
String name;
int age;
String type;@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
", type='" + type + '\'' +
'}';
}
}使用包裹(Parcelable)
//传递数据二 使用的是Parcelable(包裹)
public void sendObj2Click(View view){
Dog dog = new Dog();
dog.name ="小旺";
dog.age=2;
dog.type="萨摩耶";Intent intent = new Intent(this,MainActivity2.class);
intent.putExtra("dog",dog);
startActivity(intent);
}Dog.java
public class Dog implements Parcelable{
String name;
int age;
String type;@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
", type='" + type + '\'' +
'}';
}@Override
public int describeContents() {
return 0;
}//写入包裹
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
dest.writeString(type);
}//对象的创建器(解包,需要的对象)
public static final Parcelable.Creator<Dog> CREATOR = new Creator<Dog>() {
@Override
public Dag createFromParcel(Parcel source) {
Dag dog = new Dog();
dog.name = source.readString();
dog.age = source.readInt();
dog.type = source.readString();return dog;
}@Override
public Dog[] newArray(int size) {
return new Dog[size];
}
};
}
显示文本:
textView = (TextView) findViewById(R.id.textView_js);
Intent intent = getIntent();
// Cat cat = (Cat) intent.getSerializableExtra("cat");
// textView.setText(cat.toString());
Dag dag = intent.getParcelableExtra("dag");
textView.setText(dag.toString());
Android——Activity的简绍的更多相关文章
- Android Activity启动流程源码全解析(1)
前言 Activity是Android四大组件的老大,我们对它的生命周期方法调用顺序都烂熟于心了,可是这些生命周期方法到底是怎么调用的呢?在启动它的时候会用到startActivty这个方法,但是这个 ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- Android Activity launchMode研究
Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ...
- android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别
android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...
- Python学习(基础简绍)
今天终于开始了python的学习,至于python的历史我就不说了,百度百科中太详细了,我这里说就是关公面前耍大刀,太自不量力了,所以,废话不多说,直接讲讲我惊天学习Python的收获吧. 1.Pyt ...
- Android Activity的生命周期简单总结
Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...
- Android Activity返回键控制的两种方式
Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ...
- Android Activity和Fragment的转场动画
Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...
- android Activity生命周期(设备旋转、数据恢复等)与启动模式
1.Activity生命周期 接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...
随机推荐
- 5.05-requests_cookies2
import requests # 请求数据url member_url = 'https://www.yaozh.com/member/' headers = { 'User-Agent': 'Mo ...
- Insert Into 语句的语法错误
错误示意: 一开始程序是: 改正: 一条很简单的插入语句竟然会报错,然而直接在数据库的查询中执行中却没有问题,这个问题困扰了不少时间. 数据库使用的是ACCESS,INSERT INTO语句为inse ...
- apache和nginx结合使用
1 有时候我们希望将nginx和apache结合起来使用,nginx接受用户的请求,作为请求转发服务器,apache作为后端服务器. 2 配置如下 nginx 中将80端口的请求转发到8000端口上 ...
- 【转】【fiddler】抓取https数据失败,全部显示“Tunnel to......443”
这个问题是昨天下午就一直存在的,知道今天上午才解决,很感谢“韬光养晦”. 问题描述: 按照网络上的教程,设置fiddler开启解密https的选项,同时fiddler的证书也是安装到系统中,但是抓取h ...
- 第8章 java中的并发工具类
8.1 等待线程完成的CountDownLatch 作用:让一个线程等待其余线程完成之后在继续执行,如主线程等待开启服务的子线程执行完毕后主线程继续执行,类似于join.
- Python:Day53 Template基础
一.模板由 html代码+逻辑控制代码 组成 二.逻辑控制代码的组成 1.变量(使用双大括号来引用变量) 语法格式:{{ var_name }} -----------------------Temp ...
- 初学Python——字典
一.定义 什么是字典? 字典是一种数据类型,是一系列数据的组合. 每一个数据单元都分为key和value,key也称主键,具有唯一性,不可重复.value可以理解成是key对应的值. info={ 1 ...
- 【Codeforces Round 650】Codeforces #334 (Div. 1)
模拟CF650,ABC三题,RK90 Codeforces 650 A 思路:首先看式子 \(\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}=|x_i-x_j|+|y_i-y_j|\) ...
- [MicroPython]TPYBoard开发板DIY小型家庭气象站
对于喜欢登山的人来说,都会非常关心自己所处的高度跟温度,海拔高度的测量方法,海拔测量一般常用的有两种方式,一是通过GPS全球定位系统,二是通过测出大气压,根据气压值算出海拔高度. BMP180是一直常 ...
- iis 网页HTTP 错误 404.3 - Not Found解决方案
一. 1.依次打开控制面板→程序和功能→打开或关闭Windwos功能 2.在打开的Windows功能窗口中依次展开Internet信息服务→万维网服务→应用程序开发功能,将需要的功能选项前面的勾上,确 ...