У меня есть простой широковещательный приемник, настроенный на получение системных намерений, сообщающих мое приложение об изменении состояния сети. Идея состоит в том, чтобы либо показать диалог, сообщающий пользователю, что он покинул сеть WiFI, на которой работает приложение, или вообще потерял соединение.
public class NetworkChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){
boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED,false);
if(!connected){
//connection off
Log.w("Network Changed","SUPPLICATION_CONNECTION_CHANGE_ACTION");
}
}else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(info.isConnected()){
//connection on or WIFI changed
Log.w("Network Changed","NETWORK_STATE_CHANGED_ACTION");
}
}
}
}
Возможно ли, чтобы я даже отображал диалог таким образом? Я не могу узнать, где находится пользователь в приложении, неизвестное состояние при получении трансляции. Мой другой вариант - перевести пользователя обратно в мою активность входа, используя намерение со строкой и логическим дополнительным для тестирования. Это плохая практика программирования для этого?
I have no way of knowing where the user is in the application,
В этом случае, когда вы получаете широковещательную рассылку, вам следует рассмотреть возможность уведомления в панели уведомлений
Мой другой вариант - перевести пользователя обратно в мою активность входа, используя намерение со строкой и логическим дополнительным для тестирования. Это плохо
Когда Пользователь нажмет на уведомление, вы можете перейти к их активности входа в систему.
поместите один и тот же получатель брода в каждом из ваших действий в этом случае, действие которого будет впереди, получит эту трансляцию, а затем вы можете показать диалог, в котором говорится, что соединение потеряно в этом действии и делает все, что вы хотите.