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是支持多种数据库的 ...
随机推荐
- css样式写一个三角形
<style> .test{ border-color:transparent #abcdef transparent transparent; border-style:solid; b ...
- windows下安装testlink
因为项目中一直没有使用任何测试用例管理工具,如果需要的时候都是个人写在的excle里各自保存,因为没有系统的记录当时测试方法和测试用例,每次需要再次测试已有的功能时,因为时间太长,而往往记不得当时是怎 ...
- 本地环境下 WordPress 环境搭建与安装
本地环境:Ubuntu 14.04 使用软件: WordPress 4.1.1 中文优化版 EasyEngine 安装步骤: 安装 LNMP 环境; wget -qO ee rt.cx/ee & ...
- break的使用例一
/* Name:break的使用例一 Copyright: By.不懂网络 Author: Yangbin Date:2014年2月21日 02:28:24 Description:本程序代码无如何含 ...
- HDU 2167 Pebbles
题目大意:有个N*N( 3<=N<=15 )方阵, 可从中若干个数, 使其总和最大.取数要求, 当某一个数被选, 其周围8个数都不能选. 题解:记s数组为合法状态,即没有相邻的数字同时被选 ...
- openStack openSource CloudComputing
<一,> ,OpenStack a few Core Compontents integration with openStack-keystone Identity service1.1 ...
- tocken和ticket的数据模型;
/* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); m ...
- Eclipse、MyEclipse优化,提高运行速度
MyEclipse 是公认的优秀的软件开发工具,使用非常广泛.相信很多人在使用的过程中,发现其运行速度比较慢,因为每次操作的背后,它调用了很多的命令,执行了很多操作:但是其中大部分的操作都是非必须的: ...
- java.lang.NoClassDefFoundError: javax/servlet/AsyncContext
报错:java.lang.NoClassDefFoundError: javax/servlet/AsyncContext 我认为你需要在Servlet API,而不是2.5.AsyncContext ...
- unity 播放外部视频
摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. ...