这几天在回顾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被回收的情况例外。

Android中的一些基础知识(二)的更多相关文章

  1. Android中的一些基础知识(三)

    最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...

  2. Android中的一些基础知识(一)

    翻译自这里,并做了部分修改. 什么是Android? Android是为移动设备提供的软件,它包括操作系统.中间件.和一些关键的应用程序.应用程序执行它自己的进程和在Dalvik虚拟机中的实例. An ...

  3. Android中View的基础知识

    View的界限 View就是我们看到的界面,有四个界限范围分别是, Top/Left, Bottom/Right,坐标系从左上到右下.这四个值可以通过任何View的子类调用getTop()/get.. ...

  4. ASP.NET中的C#基础知识

    ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...

  5. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  6. MySQL中索引的基础知识

    本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...

  7. 菜鸟脱壳之脱壳的基础知识(二) ——DUMP的原理

    菜鸟脱壳之脱壳的基础知识(二)——DUMP的原理当外壳的执行完毕后,会跳到原来的程序的入口点,即Entry Point,也可以称作OEP!当一般加密强度不是很大的壳,会在壳的末尾有一个大的跨段,跳向O ...

  8. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  9. Dapper基础知识二

    在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 2,如何使用Dapper?     首先Dapper是支持多种数据库的 ...

随机推荐

  1. VS2012破解_序列号

    中文版:http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-478C-849A-02C8395D0995/VS2012_ULT_chs ...

  2. 随机数、continue、break

    arc4random() — 返回一个随机数(无符号整型).  如果要随机一个 [a, b]范围内的整数  公式:arc4random() % (b - a + 1) + a; #include &l ...

  3. BBM(Bad Block Management)坏块管理

    不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制.何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性.            ...

  4. 直接调用类成员函数地址(用汇编取类成员函数的地址,各VS版本还有所不同)

    在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用.但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法. ...

  5. Eclipse启动后一直Initializing Java Tooling (1%)

    问题症状: 工作中eclipse崩溃,再次启动后cpu占用99%,状态栏一直显示Initializing Java Tooling: (1%). 解决方案: 删除\workspace\.metadat ...

  6. JSP打印九九乘法表

    ##index.jsp: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  7. Linux-NGINX 能否添加P3P头,如何添加。 - 德问:编程社交问答

    Linux-NGINX 能否添加P3P头,如何添加. - 德问:编程社交问答   您的投票让 杜鑫 声誉值增加5分. 支持投票,不仅能让提问用户获得声誉值,让好的问题有更多的曝光,更能帮助社区筛选出好 ...

  8. [ javascript ] 司徒正美的fadeOut-fadeIn效果!

    首先感谢司徒正美的文章! 在司徒大神的博客看到一个简单的渐入渐出的效果.全然採用js实现. 例如以下: <!doctype html> <html dir="ltr&quo ...

  9. 用户向导页面实现左右滑动的ViewPager

    然后在一个博客,以前的博客ImageSwitcher实现用户向导,现在,随着ViewPager实现同样的功能.直接看代码: 布局文件activity_main.xml <RelativeLayo ...

  10. zoj 1539 Lot

    /*理解题意后,发现最后剩下的都是个数并不是和奇数偶数等有直接的关系,所以我们直接从数量入手 比如11会被分为5,6.5再分2,3.6再分3,3只要剩下三个就算一种,少于三个不用算.大于3个继续分 很 ...