По какой-то причине мне нужно зарегистрироваться в одном приемнике несколько раз, как в манифесте, и один раз в коде. Я хочу слушать изменения пакета, даже приложение не работает, а устанавливается.Регистрация на тот же приемник Несколько раз
1.In в AndroidManifest.xml
<receiver android:name="PackageChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
2.Also в коде, чтобы зарегистрировать BroadcastReceiver со следующим фрагментом кода в конструкторе.
public PackageChangeReceiver(@ForApplication Context context) {
super();
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
context.registerReceiver(this, filter);
}
Но почему-то Android получает только один из них с перерывами, когда-то он получает оба. Есть ли какой-либо документ в более новых версиях, например, как улучшение производительности в ОС Android, например, только получение одной широковещательной передачи, хотя и зарегистрировано несколько раз. Является ли это устройством или ОС или версией?
Приложение для Android может иметь только один BroadcaseReceiver с одним именем. Если вам нужны несколько приемников, вы можете создавать BroadcastReceivers с разными именами. –
На самом деле это периодически работает, когда я помещаю точку прерывания и отключает/активировать приложение по умолчанию. Я получаю его по 2 раза. Также у меня есть один BroadcastReceiver с одним именем. Но я регистрируюсь два раза. – omersem
Я предлагаю вам зарегистрировать свой BroadcastReceiver только один раз. Если вам это нужно динамически, просто удалите объявление из манифеста Android –