Android开发艺术探索--Activity、Context
来源:互联网 发布:excel数据库 编辑:程序博客网 时间:2024/05/17 08:01
本博客内容是对阅读《Android开发艺术探索》第一章Activity生命周期的知识进行记录(个人笔记)。
Activity的生命周期七个回调函数大家都很熟悉,不再介绍。说明一些注意点:
1.用户打开一个新的Activity或者按home键切回到桌面,回调为:onPause -> onStop。这里有一种特殊情况,如果新的Activity采用了透明主题,那么上一个Activity不会回调onStop函数。
这里要说明:
onCreate — onDestroy
onStart — onStop
onResume — onPause
这里onCreate和onDestroy是一对,onStart和onStop是一对,onResume和onPause是一对。那么onStart和onResume的区别是什么?
onStart函数:当前Activity已经可见,但是还不能与用户交互,所以不能获取焦点。
onResume函数:当前Activity已经可见,并且已经可以用户交互,可以获取焦点。
所以这两个函数唯一的区别就是onStart无焦点(从不可见到可见),onResume有焦点(一直可见),所以这就可以解释上面提到的注意点,为什么新的Activity采用透明主题,不会回调onStop,因为他只失去了焦点,但是尚可,所以只调用了onPause,未调用onStop。
2.当启动一个新的Activity时,旧的Activity会先调用onPause,新的Activity才会启动,调用其生命周期函数:onCreate->onStart->onResume。所以在onPause中不应该做大量复杂耗时的操作,否则会影响下一个页面的绘制。
3.在Activity中,平常会看到三个地方都是代表context,分别是getApplicationContext(),getBaseContext(),this
三个返回的都是context,那么有什么区别呢?
- this的话很好理解,this代表的是这个类的实例,比如MainActivity这个被创建的实例。因为Activity是继承自ContextThemeWrapper->ContextWrapper->Context,所以this这个实例当然是context对象了。
- 有的时候this虽然很好用,但是并不是所有时候都可用的,比如说在为一个按钮添加onClickListener的时候,onClick函数中若想获取activity的实例,就不能直接写this了,因为此时的this代表的是OnClickListener这个实例。这里你可以用getBaseContext()或者MainActivity.this。getBaseContext返回的context和this是不一样的,目前还不知道getBaseContext返回的context是什么还不清楚。
- getApplicationContext返回的是应用的上下文,声明周期是整个应用,应用摧毁他才摧毁。注意的是不可用这个getApplicationContext去startActivity,会抛出异常,因为这个context和activity的context是不一样的。
- Android开发艺术探索--Activity、Context
- <<Android开发艺术探索>>读书笔记--Activity LaunchMode
- Android开发艺术探索笔记 第一章Activity
- Android开发艺术探索(Activity)
- Android开发艺术探索笔记之Activity
- Android 开发艺术探索 学习笔记 Activity
- Android开发艺术探索读书笔记-Activity
- Android开发艺术探索-Activity的生命周期
- Android Activity生命周期(Android艺术开发探索读书笔记)
- Android开发艺术探索
- Android开发艺术探索学习-老生常谈Activity生命周期
- Android开发艺术探索学习-Activity跳转时的生命周期
- **读Android开发艺术探索学习笔记--Activity的生命周期**
- android开发艺术探索学习 之 Activity的生命周期
- Android 开发艺术探索(笔记)--1. Activity 生命周期
- Android开发艺术探索笔记一:Activity的启动模式
- Android开发艺术探索笔记(1)- Activity的生命周期
- Activity 生命周期(Android开发艺术探索读书笔记)
- 设计模式-6大设计原则
- adb命令
- 算法训练 最大体积
- navicat 1045 access denied for user
- dispatch_async 和dispatch_sync GCD
- Android开发艺术探索--Activity、Context
- matlab编程
- 继承Thread 实现线程
- 多线程
- Android 一次性退出所有Activity
- Redis Sentinel机制与用法(一)
- jsp的自定义标签
- 比较常见的操作系统有哪些
- Java源码阅读之LinkedList