跟着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 ...
随机推荐
- PowerDesigner15(16)在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
1.用PowerDesigner15建模,在Database—>Generate Database (或者用Ctrl+G快捷键)来生产sql语句,却提示“Generation aborted d ...
- 思科模拟器软件教程---教你如何划分Vlan
方法/步骤 1.打开Cisco Packet Tracer,点击[交换机],选择第三个图标2960交换机,按住鼠标左键拖动到工作区.这里有很多类型的交换机,但是我们比较常用的是这个. 2.我们选择[终 ...
- C#基础精华07(委托事件,委托的使用,匿名方法)
1.委托概述 委托是一种数据类型,像类一样(可以声明委托类型变量).方法参数可以是int.string.类类型 void M1(int n){ } √ void M2(string s){ } √ ...
- vs2015 打不开了 提示"CSharpPackage",未能正确加载xx包
原文:vs2015 打不开了 提示"CSharpPackage" 最近发现vs2015 在新建项目和加载现有项目的时候会报错 提示 开始我以为是系统的问题导致vs 配置除了问题,重 ...
- 123. Best Time to Buy and Sell Stock III
题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...
- thinkphp框架 中 ajax 的应用
在thinkphp中,内置了ajax的方法,即: ajaxReturn("data","info","status"); data:传递的数 ...
- freemarker跳出循环
break语句跳出当前循环,如下: <#list table.columns as c> <#if c.isPK> &l ...
- javascript中this的使用
终于知道某些大神在写js插件的时候为什么第一句都是"var that=this",来看看下面的这个例子,大家都会懂啦: <script type="text/jav ...
- UVa 1151 (枚举 + MST) Buy or Build
题意: 平面上有n个点,现在要把它们全部连通起来.现在有q个套餐,如果购买了第i个套餐,则这个套餐中的点全部连通起来.也可以自己单独地建一条边,费用为两点欧几里得距离的平方.求使所有点连通的最小费用. ...
- bzoj1003: [ZJOI2006]物流运输
dp+最短路.暴力枚举就可以了.O(n3logn).样例中m=n然后测样例过了.然后 54行习惯性的dis[n]然后就WA了!!!. #include<cstdio> #include&l ...