Android 广播接收机中的依赖注入
将单例注入广播接收器是一种好的做法吗 更具体地说,假设我有如下所示的singleton:Android 广播接收机中的依赖注入,android,performance,dependency-injection,singleton,android-broadcastreceiver,Android,Performance,Dependency Injection,Singleton,Android Broadcastreceiver,将单例注入广播接收器是一种好的做法吗 更具体地说,假设我有如下所示的singleton: @Singleton public class UnitProvider { private boolean mIsUsingCelsius = false; protected SharedPreferences mSharedPrefs; @Inject public UnitProvider(SharedPreferences sharedPrefs) {
@Singleton
public class UnitProvider {
private boolean mIsUsingCelsius = false;
protected SharedPreferences mSharedPrefs;
@Inject
public UnitProvider(SharedPreferences sharedPrefs) {
mSharedPrefs = sharedPrefs;
mIsUsingCelsius = isUsingCelsiusPref(Locale.getDefault());
}
public void refreshCelsius() {
if (!mSharedPrefs.contains(SharedPreferencesConstants.SP_KEY_USE_CELSIUS)) {
mIsUsingCelsius = isUsingCelsiusBasedOnLocale(Locale.getDefault());
}
}
}
还有一个广播接收器:
public class DummyReceiver extends BroadcastReceiver {
@Inject protected UnitProvider mUnitProvider;
@Override
public void onReceive(Context context, Intent intent) {
DependencyInjectionService.inject(this);
mUnitProvider.refreshCelsius();
}
}
实际上,它可以工作,但我不确定这种情况可能导致的性能和内存泄漏。是否知道注入可能导致的性能和延迟?这应该没问题。BroadcastReceiver实例只有在从onReceive返回时才处于活动状态。在那之后,只要你没有做一些愚蠢的事情,比如持有对它的引用,它就有资格进行垃圾收集 此外,您不能真正“泄漏”一个单例对象,因为基本上,它们应该是永久的