knowledge of the planet——The android learning plan

第一周

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
理解Java中的synchronized关键字。
指标:理解synchronized的含义、明确synchronized关键字修饰普通方法、静态方法和代码块时锁对象的差异。
有如下一个类A
class A {
public synchronized void a() {
}
public synchronized void b() {
}
}
然后创建两个对象
A a1 = new A();
A a2 = new A();
然后在两个线程中并发访问如下代码:
Thread1 Thread2
a1.a(); a2.a();
请问二者能否构成线程同步?
如果A的定义是下面这种呢?
class A {
public static synchronized void a() {
}
public static synchronized void b() {
}
}

第二周

1
2
3
4
5
6
7
8
话题:清晰地理解Service。
1、Service的start和bind状态有什么区别?
2、同一个Service,先startService,然后再bindService,如何把它停止掉?
3、你有注意到Service的onStartCommand方法的返回值吗?不同返回值有什么区别?
4、Service的生命周期方法onCreate、onStart、onBind等运行在哪个线程?
如何学习?
请从网上查找相干主题的内容,或者参考Android开发艺术探索,还可以阅读Android官方文档中有关Service的章节。

第三周

1
2
3
话题:理解Activity的启动模式。
1、Activity的启动模式有哪几种,分别用于什么场景?
2、清晰地描述下onNewIntent和onConfigurationChanged这两个生命周期方法的场景?

第四周

1
2
3
话题:关于startActivityForResult
1、startActivityForResult的使用场景是什么?onActivityResult回调里面的resultCode和requestCode含义是什么?
2、Activity A启动B的时候,在B中何时该执行setResult ?setResult可以位于Activity的finish方法之后吗?

第五周

1
2
3
4
话题:关于View的知识
1、View的getWidth()和getMeasuredWidth()有什么区别吗?
2、如何在onCreate中拿到View的宽度和高度?

第六周

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
话题:关于Gradle的知识
1、如何理解Gradle?Grade在Android的构建过程中有什么作用?
2、实践如下问题。
问题:我们都知道,Android中时常需要发布渠道包,需要将渠道信息附加到apk中,然后在程序启动的时候读取渠道信息。仍然拿VirtualAPK来举例,链接:https://github.com/didi/VirtualAPK
动态指定一个渠道号(比如1001),那么构建的apk中,请在它的AndroidManifest.xml文件里面的application节点下面添加如下meta-data,请写一段Gradle脚本来自动完成:
<application android:allowBackup="false" android:supportsRtl="true">
<meta-data android:name=“channel" android:value=“1001" />
</application>
要求:当通过如下命令来构建渠道包的时候,将渠道号自动添加到apk的manifest中。
./gradlew clean assembleRelease -P channel=1001
PS:禁止使用manifestPlaceholders

第七周

1
2
3
4
5
6
话题:关于序列化的知识
1、Parcelable和Serializable有什么用,它们有什么差别?
2、自定义一个类让其实现Parcelable,大致流程是什么?
(豪哥掘金文章)

第八周

1
2
3
话题:Java基础知识学习
1、Java中有哪几种引用?它们的含义和区别是什么?
2、请用Java实现一个线程安全且高效的单例模式。

第九周

第十周

1
2
3
4
话题:Android中的ClassLoader
1、Android中有哪几种ClassLoader?它们的作用和区别是什么?
2、简述ClassLoader的双亲委托模型
3、简述双亲委托模型在热修复领域的应用

第十一周

1
2
3
4
话题:Binder
1、什么是Binder?简单描述下它的工作过程和使用场景
PS:这个问题几乎Android面试必问

第十二周

1
2
3
4
话题:Okhttp和Retrofit
1、介绍这两个框架的作用和联系
PS:这个问题几乎Android面试必问

第十三周

1
2
3
话题:从源码的角度描述下Activity的启动过程
PS:这个问题Android高级别面试必问

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器