Android类解析中的陌生事物
我在Android上观察了很多行为(我正在研究multidex问题,所以我在4.4.4中使用了一个模拟器)让我对Android类加载无言以对:
在类加载器加载时, 不应该解析Android类。 但是如果我创建一个类:
public class M { public Foo m(String i) { switch (i) { case "0": return new Foo(); case "1": return new Foo2(); } return null; } }
并调试我的应用程序,添加手表:
getClass().getClassLoader().findLoadedClass("Foo") getClass().getClassLoader().findLoadedClass("Foo2")
然后我可以看到加载M
确实加载了Foo
和Foo2
!
所以课程得到了解决。
奇怪的是,这几乎是第二个问题,但是如果我添加M extends Application
,那么M
根本就不会被解析,即使实例化它也是如此。 当调用m(X)
时, Foo
和Foo2
仅被加载到JVM中m(X)
当X
为"0"
时加载Foo
,对于X="1"
加载Foo2
)。
这里有没有人对这些基本问题有合理的解释:
- 为什么
M
解决了,不应该解决类。 即使实例化M
也不应加载Foo
或at least Foo2
。 - 为什么扩展
Application
的类表现不同? - 是否有其他Android类以不同的方式运行?
- Android:将传感器数据从服务广播到活动
- 如何让工具栏保持在屏幕顶部而不是显示在整个屏幕上?
- Android java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为android.widget.EditText
- 为什么LocalBroadCastManager从IntentService发送的意图没有被Activity类中的BroadCastReceiver接收?
- 如何隐藏视图总是如此
- 在android上解密php加密数据
- Android:连续点击一到六个按钮将不同的结果串在一起
- 每秒从listView显示字符串
- 如何在android中将video文件(.mp4)格式转换为二进制格式?