总结
其实要轻松掌握很简单,要点就两个:
- 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
- 多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
以上就是总结的关于在面试的一些总结,希望对大家能有些帮助,除了这些面试中需要注意的问题,当然最重要的就是刷题了,这里放上我之前整理的一份超全的面试专题PDF
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
这里只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
@Override
public void onCompleted() {
Log.d(tag, "抓完收工!");
}
@Override
public void onError(Throwable e) {
Log.d(tag, "oh,no让他给跑了");
}
};
不仅基本使用方式一样,实质上,在 RxJava 的 subscribe 过程中,Observer 也总是会先被转换成一个 Subscriber 再使用。所以如果你只想使用基本功能,选择 Observer 和 Subscriber 是完全一样的。当然他们也是有区别的,这里就不说了。
> 跟上文的被观察者类似,这里创建的Observer 或者Subscriber,是不会立即执行其回调方法的,只有当发生了订阅时(即observable.subscribe(observer)或者Observable.subscribe(Subscriber))时,Observer 或者Subscriber的回调方法才会执行
**谓语 subscribe()方法 即订阅**
创建了 Observable 和 Observer 之后,再用 subscribe() 方法将它们联结起来,整条链子就可以工作了。代码形式很简单:
observable.subscribe(observer);
// 或者:
observable.subscribe(subscriber);
Observable.subscribe(Subscriber) 的内部实现是这样的(仅核心代码):
// 注意:这不是 subscribe() 的源码,而是将源码中与性能、兼容性、扩展性有关的代码剔除后的核心代码。
// 如果需要看源码,可以去 RxJava 的 GitHub 仓库下载。
public Subscription subscribe(Subscriber subscriber) {
subscriber.onStart();
onSubscribe.call(subscriber);
return subscriber;
}
可以看到,subscriber() 做了3件事:
1. 调用 Subscriber.onStart() 。这是一个可选的准备方法。
2. 调用 Observable 中的 OnSubscribe.call(Subscriber) 。在这里,事件发送的逻辑开始运行。从这也可以看出,在 RxJava 中, **Observable 并不是在创建的时候就立即开始发送事件,而是在它被订阅的时候,即当 subscribe() 方法执行的时候**。
3. 将传入的 Subscriber 作为 Subscription 返回。这是为了方便 unsubscribe().
### 4\. OK,主谓宾解释的还不错,帮我总结一下如何使用最基本的RxJava吧
**答:**
1. 创建Observable
2. 创建Observer或者Subscriber
3. 订阅:observable.subscribe(observer); 或者 observable.subscribe(subscriber);
### 5.总结起来虽然就三步,但是具体代码还是很罗嗦,特别是回调方法很多,例如:创建观察者Observer或者Subscriber 时,我只关心onNext()方法,并不关心onComplete()方法和onError()方法, 能不能简化点呢
**答:**
当然可以
除了 subscribe(Observer) 和 subscribe(Subscriber) ,subscribe() 还支持不完整定义的回调,RxJava 会自动根据定义创建出 Subscriber 。形式如下:
Action1<String> onNextAction = new Action1<String>() {
// onNext()
@Override
public void call(String s) {
Log.d(tag, s);
}
};
Action1<Throwable> onErrorAction = new Action1<Throwable>() {
// onError()
@Override
public void call(Throwable throwable) {
// Error handling
}
};
Action0 onCompletedAction = new Action0() {
// onCompleted()
@Override
public void call() {
Log.d(tag, "completed");
}
};
// 自动创建 Subscriber ,并使用 onNextAction 来定义 onNext()
observable.subscribe(onNextAction);
// 自动创建 Subscriber ,并使用 onNextAction 和 onErrorAction 来定义 onNext() 和 onError()
observable.subscribe(onNextAction, onErrorAction);
// 自动创建 Subscriber ,并使用 onNextAction、 onErrorAction 和 onCompletedAction 来定义 onNext()、 onError() 和 onCompleted()
observable.subscribe(onNextAction, onErrorAction, onCompletedAction);
> 注意到onNextAction 和onErrorAction的类型是Action1,而onCompletedAction 的类型是Action0 ,有何不同?
>
> 目前只要知道:
> \- Action1的回调方法call需要接收参数
> \- Action0的回调方法call不需要接收参数就可以了
### 6.上面只是简化了建观察者Observer或者Subscriber 的回调方法,对于被观察者Observable,有什么简化的方法吗
**答:**
当然有了
Observable.create() 方法是 RxJava 最基本的创造事件序列的方法。基于这个方法, RxJava 还提供了一些方法用来快捷创建事件队列,例如:
* just(T…): 将传入的参数依次发送出来。
Observable observable = Observable.just("Hello", "Hi", "Aloha");
// 将会依次调用:
// onNext("Hello");
// onNext("Hi");
// onNext("Aloha");
// onCompleted();
* from(T\[\]) : 将传入的数组或 Iterable 拆分成具体对象后,依次发送出来。
String[] words = {“Hello”, “Hi”, “Aloha”};
Observable observable = Observable.from(words);
// 将会依次调用:
// onNext("Hello");
// onNext("Hi");
// onNext("Aloha");
// onCompleted();
上面 just(T…) 的例子和 from(T\[\]) 的例子,都和之前的 create(OnSubscribe) 的例子是等价的。
### 7.那你把最初写的警察抓小偷的例子,用简便方法写一遍
1. 第一种简便方法—>just
Observable.just(“我在偷第一个人”,“我在偷第二个人”,“我在偷第三个人”).subscribe(new Action1() {
@Override
public void call(String s) {
Log.e("小偷发出的消息",s);
Log.e("警察","警察采取了行动");
}
});
1. 第二种简便方法—>from
String [] msg={“我在偷第一个人”,“我在偷第二个人”,“我在偷第三个人”};
Observable.from(msg).subscribe(new Action1() {
@Override
public void call(String s) {
Log.e("小偷发出的消息",s);
Log.e("警察","警察采取了行动");
}
});
最后
下面是辛苦给大家整理的学习路线
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
行动");
}
});
最后
下面是辛苦给大家整理的学习路线
[外链图片转存中…(img-aBdjKLHS-1715889318825)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!