Я создал широковещательный приемник для прослушивания событий изменения связи. Приемник отлично работает, когда я скрою приложение, используя домашнюю кнопку. Но когда я использую кнопку «Назад» для выхода из приложения, приемник вещания перестает слушать изменения подключения. Я искал его и обнаружил, что я должен назвать широковещательный приемник из службы, но это тоже не работает над приложением. Вот мой код для вещательного приемника с сервисом.Android Broadcast приемник не работает на приложение закрыть
интернет
public class InternetService extends Service {
NetworkChangeReceiver networkChangeReceiver;
public InternetService() {
super();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, filter);
return Service.START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Broadcast приемник
public class NetworkChangeReceiver extends BroadcastReceiver {
boolean isConnected = false;
@Override
public void onReceive(final Context context, final Intent intent) {
isNetworkAvailable(context);
}
private boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null) {
if (info.isConnected()) {
if (!isConnected) {
isConnected = true;
Toast.makeText(getBaseContext(), "Connected to internet", Toast.LENGTH_LONG).show();
Log.v("Internet", "Internet Connected");
hitDataService();
Intent intent = new Intent(ActivityForm.this, MyService.class);
startService(intent);
}
return true;
}
}
}
isConnected = false;
return false;
}
}
Я хочу отправить некоторые данные для обслуживания даже в приложения близко и когда мобильный подключен к интернету. Есть ли другой способ добиться такого же поведения.
Я также попытался добавить следующие строки в onCreateMethod(), но до сих пор не повезло
ComponentName receiver = new ComponentName(getBaseContext(), NetworkChangeReceiver.class);
PackageManager pm = getBaseContext().getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Ваш вещательный приемник является внутренним классом деятельности? – Blackbelt
да, это внутренний класс –
Я бы начал перемещать его в отдельный класс или сделать его статическим – Blackbelt