跟着Android官网学习Activity
1.Activity介绍
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. (说白了Activity就是一个和用户交互的界面) The window typically fills the screen, but may be smaller than the screen and float on top of other windows.(一般来说Activity会填满屏幕,也有可能比屏幕小,浮在其他窗口(Activity)的上面) An application usually consists of multiple activities that are loosely bound to each other. Typically, one activity in an application is specified as the "main" activity,(有的Activity会被设为主Activity(<Activiy>元素里含有<intent-filter>),当程序第一次启动的时候,会显示这个Activity) which is presented to the user when launching the application for the first time. Each activity can then start another activity in order to perform different actions.(一般来说,每个Activity都可以启动其他Activity) Each time a new activity starts, the previous activity is stopped, (每次一个新的Activity启动,前面启动的那个Activity就会停止)but the system preserves the activity in a stack (the "back stack")(但是系统会把这些Activity保存在栈里面). When a new activity starts, it is pushed onto the back stack and takes user focus.(每次一个activit启动,就会被它放到back stack里同,且获得聚集) The back stack abides to the basic "last in, first out" stack mechanism(这个栈是后进先出的), so, when the user is done with the current activity and presses the Back button, it is popped from the stack (and destroyed) and the previous activity resumes.(所以当对当前Activity_2操作完成,要返回Activity_2时,Activity_2会从back stack中弹出,并且被销毁,而Activity_1则会resume) (The back stack is discussed more in the Tasks and Back Stack document.) When an activity is stopped because a new activity starts, it is notified of this change in state through the activity's lifecycle callback methods. There are several callback methods that an activity might receive,(当一个Activity因为一个新的Activity的启动而改变状态时,会调用相应的回调函数) due to a change in its state—whether the system is creating it, stopping it, resuming it, or destroying it—and each callback provides you the opportunity to perform specific work that's appropriate to that state change. For instance, when stopped, your activity should release any large objects, such as network or database connections(当Activity停止(stop)的时候,应该释放一些大的对象,比如网络连接,数据库连接). When the activity resumes, you can reacquire the necessary resources and resume actions that were interrupted(但是Activity resume的时候,可以继续之前中断的一些操作). These state transitions are all part of the activity lifecycle.
1.1 back stack 后退栈 (先进后出)([]表示栈)
应用启动显示Activity_1,栈会插入Activity_1 [Activity_1];
跳到Activity_2,栈插入Activity_2 [Activity_1,Activity_2];
跳转到Activity_3,栈插入Activity_3 [Activity_1,Activity_2,Activity_3];
按返回键,Activity_3会从back stack中弹出,并且被销毁,Activity_2会继续(resume) [Activity_1,Activity_2]
总结:Activity一显示,就会被压到栈中,一按返回按钮,就会被弹出栈,栈先进后出。应用只显示栈顶的Activity
2.创建Activity
写一个类继承Activity,实现一些生命周期的类,比如:created, stopped, resumed, or destroyed
其中下面两个方法是最重要的
onCreate()
You must implement this method.必须实现的方法 The system calls this when creating your activity(系统创建activity的时候就会调用该方法). Within your implementation, you should initialize the essential components of your activity. (在onCreate()实现里,要对activity的组件进行初始化)Most importantly, this is where you must call setContentView() to define the layout for the activity's user interface.(最重要的是还要高用setContentView(),这个方法是用来定义这个activiy的布局的)onPause()
The system calls this method as the first indication that the user is leaving your activity (though it does not always mean the activity is being destroyed). This is usually where you should commit any changes that should be persisted beyond the current user session (because the user might not come back)(系统会调用这个方法做为第一迹象表明用户要离开这个Activity。这时候,这个方法需要对一些超过当前用户session的“更改”进行保存。虽然不一定意味着这个Activity会被destory,但是用户可能不会再回来).
跟着Android官网学习Activity的更多相关文章
- Knockout.Js官网学习(系列)
1.Knockout.Js官网学习(简介) 2.Knockout.Js官网学习(监控属性Observables) Knockout.Js官网学习(数组observable) 3.Knockout.Js ...
- 一劳永逸搭建android开发环境(android官网reference sample api tutorial全下载)
[摘要]本文简单介绍了android开发环境的搭建,重点介绍了SDK manager和AVD升级问题:并提供了android reference,sample,api,及docs的下载信息. [1]为 ...
- 跟着minium官网介绍学习minium-----(一)
某天,再打开微信开发者工具的时候收到一条推送.说是微信小程序自动化框架 Python 版 -- Minium 公测. Url如下: https://developers.weixin.qq.com/c ...
- [Android]官网《monkeyrunner》中文翻译
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5050768.html 翻译自 Android Develope ...
- [Android]官网《UI/Application Exerciser Monkey》中文翻译
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5049041.html 翻译自 Android Develope ...
- [Android]官网《Testing Support Library》中文翻译
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5048524.html 翻译自 Android Develope ...
- [Android开发教程]Android官网developer training中文版教程 - 1.1.1 创建一个Android项目
本系列持续更新中.转载请注明来源. 前言:近期打算系统学习一下Android开发,发现Android官网上的developer training也是个非常好的学习资料,于是想到一边学习一边写一个中文版 ...
- 【Spark深入学习 -16】官网学习SparkSQL
----本节内容-------1.概览 1.1 Spark SQL 1.2 DatSets和DataFrame2.动手干活 2.1 契入点:SparkSess ...
- android官网被封掉了,只好用这个网站进谷歌了!嘎嘎
http://developer.android.com/sdk/index.html 这个可以进去,但是必须是搜狐 .360,uc都不用特意FQ http://173.1 ...
随机推荐
- 关于用 MySQL 存储 Emoji
http://www.v2ex.com/t/137724 如果你希望让你的网站或者 App 支持 Emoji,那么在初次设置 MySQL 时,有一些细节你需要知道. Emoji Emoji 字符的特殊 ...
- mysql-5.7.10-winx64 安装时遇到的问题
1.修改密码# /etc/init.d/mysqld stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &am ...
- ANDROID_MARS学习笔记_S01_006ImageView
一.ImageView介绍 设置scalType Must be one of the following constant values. Constant Value Description ma ...
- Android:ScaleType设置图片
设置例子:ImageViewId.setScaleType(ScaleType.CENTER); ScaleType:设置图片显示方式 效果预览:
- AC题目简解-数据结构
A - Japan POJ 3067 要两条路有交叉,(x1,y1)(x2,y2)那么需要满足:(x1-x2)*(y1-y2)<0判断出这是求逆序的问题 树状数组求逆序,先通过自定义的比较器实 ...
- fedora SSH
设置无密码登陆时注意:chmod 0700 .ssh chmod 600 ~/.ssh/authorized_keys cat /root/.ssh/id_rsa.pub >> /ro ...
- Win7安装错误提示与解决办法大全
Windows7安装时有许多提示错误,许多朋友不知道如何解决,那就看看这篇软媒整理的文章吧,或许有些帮助.本文出现的问题同样应用于其他版本的Windows 7,甚至是Vista,收藏一下本文,或者某天 ...
- 【HDOJ】4333 Revolving Digits
扩展KMP基础题目. /* 4333 */ #include <iostream> #include <sstream> #include <string> #in ...
- poj 1416 Shredding Company( dfs )
我的dfs真的好虚啊……,又是看的别人的博客做的 题目== 题目:http://poj.org/problem?id=1416 题意:给你两个数n,m;n表示最大数,m则是需要切割的数. 切割m,使得 ...
- sharedevelop iis express
sharedevelop 的IIS express的配置文件在 %userprofile%\documents\IISExpress\config\applicationhost.config 自动会 ...