关于Android开发者必须知道的知识点(一)

今天突发奇想的想总结一下我个人认为,作为一个Android开发者必须知道的知识点。

目录

1. Context

1.1 context是什么?

1.2 context的作用是什么?

1.3 getContext(). getBaseContext(). getApplicationContext()以及this的作用和区别

1.3.1 getApplicationContext()

1.3.2 getContext() 和 this

1.3.3 getBaseContext()

1.4 context数量

2. Activity与Fragment的区别及联系

3. Android Studio调试技巧

4. Android Intent详解


1. Context

context用的够频繁吧,问一下自己知道context是什么吗?context的作用是什么?getContext(), getBaseContext(), getApplicationContext()及其this的作用分别是什么以及有什么区别?context会为null吗?什么时候是为null呢?

1.1 context是什么?

是一个应用程序全局信息的接口,是一个抽象类,Android的系统实现它,允许访问应用程序特别的资源和类,以及对应用程序级别的操作,比如:启动Activity、启动广播、传递接收Intent、操作数据库等等。

1.2 context的作用是什么?

  1. 加载资源
  2. 启动activity
  3. 创建view视图
  4. 获取系统服务

1.3 getContext(). getBaseContext(). getApplicationContext()以及this的作用和区别

作用都是获取context,但获取的context是不同的,如下图所示。

1.3.1 getApplicationContext()

获取的是Application Context,所以生命周期最长,当你需要传递一个超出activity的context时就需要用到Application Context。

例如:当你创建一个单例类时,就需要用到Application Context, 如果这时候你用的是Activity的context,就会导致内存泄漏,因为单例类是一直存在的,也就会一直保持对Activity Context的引用,从而使Activity不会被Android的垃圾回收机制回收。

总结:当你需要一个context的生命周期大于某个Activity Context时,就需要用Application Context。

1.3.2 getContext() 和 this

获取的是Activity的Context,与Activity的生命周期相关联,当你需要在一个Activity的生命周期内使用Context时,就需要使用Activity Context。

例如:当你需要创建一个生命周期与activity 生命周期相互联系的对象时,就需要使用Activity Context。

1.3.3 getBaseContext()

通过ContextWrapper.getBaseContext()来获取context。

ContextWrapper:代理实现Context,该实现简单地将所有调用委托给另一个Context,通过子类化来改变作用而不改变Context的源代码。

getBaseContext()获得由构造函数或setBaseContext设置的基本context。

1.4 context数量

context的类型有三种,分别是Application、Activity、Service三种类型,

所以context的数量计算方式为:Context数量 = Activity数量 + Service数量 + 1(Application)

 

2. Activity与Fragment的区别及联系

关于Activity和Fragment的生命周期请看博客 -> Android Activity&Fragment生命周期学习

Fragment是Activity的一部分,对于Activity能构建自己的UI到相对应的Activity。可以认为Fragment是Activity的子类。但是Fragment不能独立存在,它必须和Activity相联系,有自己的生命周期,可以接受自己的输入事件,但是它的生命周期是基于对应Activity的生命周期,例如,当Activity暂停时,其中的所有Fragment也都会暂停,当Activity被销毁时,所有Fragment也都会被销毁。

Activity是一个应用程序组件,用于构建用户交互界面,在Activity中添加Fragment是为了创建多窗口UI界面,一个Activity可以包含多个Fragment,同一个Fragment也可以在不同的Activity间重用。

Activity和Fragment之间的生命周期中,最重要的区别就是:如何存储到各自的后台堆栈中。默认情况下,Activity会被放到系统管理Activity的后台堆栈中(以便用户可以使用后退按钮导航回该Activity)。但是对于Fragment,只有当显式地请求在删除Fragment期间通过调用addToBackStack()来保存实例时,才会将Fragment放入由对应Activity管理的后台堆栈中。

 

3. Android Studio调试技巧

掌握好的调试技巧有助于你很快的找出问题所在,详细请看博客:Android Studio调试技巧

 

4. Android Intent详解

当我们实现Activity间的跳转时都需要用到Intent,Intent翻译过来为‘意图’,除了广为人知的跳转Activity时需要用到Intent,你还知道关于Intent的其他知识点吗?具体请看另一篇博客:Android Intent详解

 

~未完待续中... 知识点有点乱,因为我想到什么就添加什么,日后需要整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值