少壮不努力,老大看源码。
------不晓得哪个说的,可能是鲁迅?
就Android原生而言,传值是相当的简单。
Activity之间是这样传的:
public void goActivity() {
Intent intent = new Intent(MainActivity.this, DemoActivity.class);
intent.putExtra("text", "content");
startActivity(intent);
}
Activity传向Fragment是这样传的:
public void goFragment(){
Bundle bundle = new Bundle();
bundle.putString("text","content");
NoteListFragment fragment = new NoteListFragment();
fragment.setArguments(bundle);
// showFragment();
}
很古老的传值方式,那个时候大家都还很单纯,没有那么多小三(第三方库),甚至干脆自己写interface传值…
但随着Android市场的繁荣,业务的逐渐复杂,界面的日益花哨,数据的急速增长,原生的传值方式似乎渐渐退出视野了。
有时候我在想,这和现在的整个Android行业状况是契合的,最近几年,原生似乎越发没落,各种移动框架的盛行让原生似乎变成了第二选择,从H5到RN,从RN到Flutter,似乎某一天,Android也会走上Symbian的老路,被更新的技术代替。
每年都会出现新语言,Android被替代似乎也不是什么遥不可及的事情,作为一个日渐稳定下来的从业人员,我表示慌的一批…
和代码打交道其实是一件很幸运的事情,0和1的世界真是很单纯,远比生活中的蝇营狗苟来着宽心,当然,要是没有bug就更好了…
可惜,大家不止要应付工作中的bug,还要敷衍生活中的蝇营狗苟,工作中的bug终有调试好的那一天,生活中的bug有的却会影响人一生。
最近几年人工智能很火热,与之相关的语言与技术又兴盛起来,这一波一波的技术浪潮让许多业内人员望而却步,大家都说程序员是吃青春饭,向来地位不高,一方面是国内的加班文化盛行,一方面也是国人自古以来就注重安定,所有不稳定的行业都是下九流,而技术行业,又尤其是处于风口浪尖的互联网行业,怎么可能稳定地下来?有此言论,似乎也是理所当然。
闲来想想,一个行业只需要少数人去探路,多数人只是在这条路上来回奔波,技术从来不神圣,甚至向来是为权力和资本服务的,技术人说来高傲,却要立足于能服务于强大的资本或权力而言,简单直接地说,技术也需要光环加身,不论是金钱、名声或是地位。我曾经以为技术是单纯的,但其实也并非想像中那么纯粹,只是相比之下,其他东西都已经面目全非。
啰嗦一堆,真是年纪大了容易怀旧。
…
其实我只是想说,原生传值的原理真是出乎意料的简单~
//Intent.java
public @NonNull Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
此时,我已经有了一种不祥的预感…
//Bundle.java
ArrayMap<String, Object> mMap = null;
public void putString(@Nullable String key, @Nullable String value) {
unparcel();
mMap.put(key, value);
}
祝各位技术人勇猛精进,再进一步。
以上。