Android中的一些基础知识(二)
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看。
- 简单介绍一下Activity的生命周期
在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译了一下。- onCreate:当Activity第一次被创建的时候调运。应该在这个回调函数中做所有的初始化操作,比如:创建View,给lists绑定数据等。在这个函数执行完后,通常会调运onStart方法。Always followed by onStart()(这句就不用翻译了吧)
- onRestart:当Activity被stop后,有重新启动的时候调运。Always followed by onStart()(这句就不用翻译了吧)
- onStart:当Activity对用户可见之前调运。当Activity要显示到前台(对用户可见)时,Followed by onResume();当Activity要隐藏时,Followed by onStop() 。
- onResume:当Activity开始用用户交互的时候回调此方法。此时这个Activity在Activity栈的顶端。Always followed by onPause().
- onPause:当系统准备打开另一个Activity的时调用。此方法通常被用来保存当前的数据、停止动画、一些消耗cpu的操作等。并且应该处理的很及时。
- onStop:当Activity对用户不可见的时候调运。
- onDestroy:在Activity被销毁之前调运。
Activity的这几个生命周期函数是成对出现的:onCreate和onDestroy,onStart和onStop(Activity的View已被创建,但对用户不可见),onResume和onPause(Activity对用户仍然可见)。
- 如果Activity A正在运行,现在打开Activity B,Activity A、B的生命周期方法的执行顺序是怎样的?
在Android API中是这样onPause方法的:
Called when the system is about to start resuming another activity.
它是说当系统准备打开另一个Activity的时候调用onPause方法。因此,此过程应该是这样的:
通过运行程序,打印log,也可以验证这个的结论,log截图如下:
- 两个Activity之间怎么传递数据?
基本的数据可以通过Intent的putExtra()来传递,如果是其他数据类型,可以通过Intent的putExtras()来传递,此时改函数里需要传递一个Bundle类型的数据,Bundle可以通过如下两种方式来创建
Bundle bundle=new Bundle();
bundle.putSerializable("data",obj);
或者
Bundle bundle=new Bundle();
bundle.putParcelable("data",obj);
其中 obj分别需要继承自Serializable或者Parcelable。这里说一下Serializable和Parcelable是区别。Serializable是Java中的,它是将数据以二进制的形式写入的文件中来保存的,需要时就从文件中读取。而Parcelable是Android中独有的,它是将数据写入到内存中,用的时候直接从内存中度取,因此效率较高,但是Parcelable不能放较大的数据,因为这样会导致OOM。
描述一下Service的生命周期、启动方式及区别、如何停止Service?
在Service的生命周期中被调用的方法有:onCreate、onStart、onDestroy、onBind、onUnbind,显然比Activity的少许多。
Service的启动方式有两种:- 通过startService:
Service会经过onCreate,onStart,然后运行,在调用stopService时,会回调onDestroy方法,停止Service。如果此种情况下打开Service的Activity退出前不调运stopService,次Service会一直运行,直至被系统回收(当系统内存不够时)。 - 通过bindService:
Service会经过onCreate,onBind,然后运行,在调用unBindService时,会回调onDestroy方法,停止Service。如果此种情况下打开的Service会和打开它的Activity绑定在一起,Activity销毁,Service也被销毁。
注:一个Service只会被创建一次,当它执行完onCreate方法后,调运再startService,只会执行onStart方法,调运再bindService,只会执行onBind方法。
被start的Service只能调运stopService来停止Service,被bind的Service只能调运unBindService来停止Service。同时调运了start、bind的Service则分别需要调运stopService、unBindService来停止Service。当然,由于系统内存不够,Service被回收的情况例外。- 通过startService:
Android中的一些基础知识(二)的更多相关文章
- Android中的一些基础知识(三)
最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...
- Android中的一些基础知识(一)
翻译自这里,并做了部分修改. 什么是Android? Android是为移动设备提供的软件,它包括操作系统.中间件.和一些关键的应用程序.应用程序执行它自己的进程和在Dalvik虚拟机中的实例. An ...
- Android中View的基础知识
View的界限 View就是我们看到的界面,有四个界限范围分别是, Top/Left, Bottom/Right,坐标系从左上到右下.这四个值可以通过任何View的子类调用getTop()/get.. ...
- ASP.NET中的C#基础知识
ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...
- 菜鸟脱壳之脱壳的基础知识(二) ——DUMP的原理
菜鸟脱壳之脱壳的基础知识(二)——DUMP的原理当外壳的执行完毕后,会跳到原来的程序的入口点,即Entry Point,也可以称作OEP!当一般加密强度不是很大的壳,会在壳的末尾有一个大的跨段,跳向O ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- Dapper基础知识二
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 2,如何使用Dapper? 首先Dapper是支持多种数据库的 ...
随机推荐
- ThinkPHP第二十四天(JQuery常用方法、TP自动验证)
---恢复内容开始--- 1.JQuery常用方法 A:JS中可以用json格式数据当做数组使用,如var validate={username:false,pwd:false,pwded:false ...
- CSS 基础总结
CSS基础 Doctype 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文档类型 规范来解析这个文档. 在标准模式中,浏览器根据规范呈现页面: 在混杂模式中,页面以一种比较宽松的 ...
- Spring-AOP实践
Spring-AOP实践 公司的项目有的页面超级慢,20s以上,不知道用户会不会疯掉,于是老大说这个页面要性能优化.于是,首先就要搞清楚究竟是哪一步耗时太多. 我采用spring aop来统计各个阶段 ...
- C# async await 例子
private static async void Worker() { Console.Write("main thread id is :{0}",Thread.Current ...
- MYSQL 退出的三个方式
方式1: exit 方式2: quit 方式3: \q
- 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET
基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 于视觉信息的网页分块算法(VIPS) 2012-07-29 15:22 1233人阅读 评论(1) ...
- android之ArrayAdapter的重写
昨天介绍了ArrayAdapter的使用,今天介绍一下更加实用的一点,对它进行重写,满足自己的个性化设计需要. ArrayAdapter(数组适配器)一般用于显示一行文本信息,所以比较容易. publ ...
- poj 2480 (欧拉函数应用)
点击打开链接 //求SUM(gcd(i,n), 1<=i<=n) /* g(n)=gcd(i,n),根据积性定义g(mn)=g(m)*g(n)(gcd(m,n)==1) 所以gcd(i,n ...
- linux内核之网络协议栈
https://www.ibm.com/developerworks/cn/linux/l-ntflt/
- 自定义通用Distinct去除重复数据的2中方式
由于Lambda Distinct方法默认是按照集合里面的值比较的,所以当集合里面存放的是类的时候,我们一般是按照实体中的某一属性值比较,其实是用默认的Distinct也可以的,自己先定义一个实现了接 ...