这几天在回顾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可以通过如下两种方式来创建

       

1 Bundle bundle=new Bundle();
2 bundle.putSerializable("data",obj);

或者

1 Bundle bundle=new Bundle();
2 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被回收的情况例外。

转载于:https://www.cnblogs.com/yxx123/p/5272832.html

Android中的一些基础知识(二)相关推荐

  1. Android自定义view之基础知识

    Android自定义view之基础知识 虽然Android已经自带了很多实用的view和layout,加以调教能实现很美观的界面,但是有一些情况下,需要实现特殊的界面效果,比如我们比较熟悉的各种播放器 ...

  2. Android ble连接过程,Android BLE的一些基础知识及相关操作流程 - 全文

    前言: 本文主要描述Android BLE的一些基础知识及相关操作流程,不牵扯具体的业务实现,其中提供了针对广播包及响应包的解析思路,希望对正在或即将面临Android BLE开发的伙伴们有所引导. ...

  3. 可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识

    本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 稀土掘金链接 前言: 最近在研究图片压缩原理,看了大量资料,从上层尺寸压缩.质量压缩原理到下层的哈夫曼压缩,走成华大道,然后去二仙桥,全 ...

  4. Java中的线程基础知识

    Java中的线程基础知识 1.线程概念 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个 ...

  5. CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释

    CV:计算机视觉技术之图像基础知识(二)-图像内核的可视化解释 目录 图像内核的可视化解释 测试九种卷积核 官方Demo DIY图片测试 DIY实时视频测试 相关文章 CV:计算机视觉技术之图像基础知 ...

  6. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  7. 中职计算机基础课堂传统教学,中职计算机基础知识教学创新

    刘静月 [摘要]信息化是当今世界经济和社会发展的趋势,以计算机技术为代表的信息技术已经成为拓展人类能力不可缺少的工具,具有越来越重要的地位.中等职业学校在培养未来的高素质劳动者和技能型人才时,使学生掌 ...

  8. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  9. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

最新文章

  1. java tm 插件_VS Code 中有哪些好用的 Java 插件?
  2. using用法是什么?
  3. datetime mysql 当天_MySQL 获得当前日期时间(以及时间的转换)
  4. 开源即时通讯软件|最好的开源即时通讯软件——XEIM
  5. rsync使用(二)
  6. 冒泡排序详解(C++)
  7. it营Typescript学习笔记02(基础完结)模块,命名空间,装饰器
  8. Centos7下安装svnadmin
  9. Photoshop学习之旅--通道抠图
  10. 【java】this()与super()使用详解
  11. maven工程读取resource资源文件(踩坑)
  12. 性能测试培训:性能瓶颈分析思路
  13. 利用C++求解一元二次方程
  14. 数据库不能读取也不能打开的解决办法
  15. PS练习7——蒙版的使用
  16. CDA数据分析师3个级别的薪资待遇|人才认证标准
  17. 有道词典java下载手机版下载手机版_有道词典app下载_有道词典在线翻译下载安装手机版v9.08...
  18. 攻防世界之Miscellaneous-300
  19. html颜色对应卡,PANTONE色卡
  20. shell判断所输整数是否为质数

热门文章

  1. centOs 7.2*64 ECS nginx安装教程
  2. [react-router] 请你说说react的路由的优缺点?
  3. Taro+react开发(45)taro中组件生命周期
  4. 前端学习(3201):react插件
  5. [html] 使用递归时应该注意哪些问题?
  6. [html] 如何给input的右上角加个清除的按钮?
  7. 前端学习(2572):如何使用vuex
  8. 前端学习(2571):为什么使用vuex
  9. 前端学习(2225):react之类定义组件
  10. “睡服”面试官系列第十九篇之async函数(建议收藏学习)