android开发笔记

1、androidManifest.xml receiver标签生成原理:

首先到系统广播了某个intent,这个intent和manifest文件里的intent-filter能匹配的,那么系统会生成Receiver对象,主要调用的newInstance方法,这就是需要在manifest文件中声明类名的原因。既然是newInstance,那么限制条件就比较多。

首先这个类有无参构造函数,并且是public的。一般为一个类单独一个文件的不会有问题。

一般有问题的就是在内部类的情况下,问题会比较多。

内部类很多情况下是private,那么newInstance是无法生成实例,抛出异常。即使是public的,也会有问题。因为内部类隐含外部类的引用,导致没有无参构造函数,也无法生成实例。

所以在manifest中声明内部类,那么它必须是public static的,public表示系统可见,static表示没有隐含外部类的引用。这样newInstance可以成功调用。但是这样做没有什么意义,定义内部类主要是考虑到与外部类通信的便捷性。可以方便的访问外部类的一些变量。现在改成static,那么就无法访问外部类的非static变量。这样和将receiver单独一个文件没什么区别。

 


你可能感兴趣的:(android)