BroadcastReceiver在android清单中没有默认构造函数

Tho*_* Oo 5 java android constructor broadcastreceiver

我正在尝试注册一个将BroadcastReceiver扩展为Android清单中的接收器的类.我可以轻松注册它们,但问题是因为类没有空构造函数.

  1. 我不明白为什么BroadcastReceiver需要一个空的构造函数,有没有办法绕过这个?
  2. 我可以在我的类中创建一个公共空构造函数,但问题是,这个类也是一个单例类.这意味着我不希望这个类使用空构造函数!这里有一个明显的冲突,我可以写一个空的构造函数,并且信任用户不会通过编写文档来使用它,但是必须有一个更简单的方法吗?

TLDR; 如何实现一个广播接收器的类(需要空构造函数在android清单中注册它),但同时,是一个单例类或一个拒绝用户访问默认构造函数的类.(我已经尝试使默认构造函数受到保护,但由于清单无法注册接收器,因此无法解决问题)

Com*_*are 6

有没有解决的办法?

不,Android不知道如何调用任何其他构造函数,或者传递给该构造函数的值.

这个类也是一个单例类

这是不可能的.Android将为其BroadcastReceiver收到的每个广播创建一个新的清单实例.

but there has to be a simpler method right?
Run Code Online (Sandbox Code Playgroud)

是的:不要BroadcastReceiver成为单身人士.让其他类成为单例,即BroadcastReceiver使用.