此处发生网络更改时,当发生网络更改时,快餐栏将重复重复三到四次。如何避免它? 在此先感谢快餐栏自动重复
主要activity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
registerReceiver(mHandleMessageReceiver, new IntentFilter("IS_NETWORK_AVAILABLE"));
//toolbar = (Toolbar) findViewById(R.id.toolbar);
myAnim= AnimationUtils.loadAnimation(this, R.anim.bounce);
//setSupportActionBar(toolbar);
//initNavigationDrawer();
viewPager = (ViewPager) findViewById(R.id.splash);
ImageAdapter adapter = new ImageAdapter(this);
viewPager.setAdapter(adapter);
}
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{
boolean isNetworkAvailable = intent.getBooleanExtra("IS_NETWORK_AVAILABLE", false);
String networkStatus = isNetworkAvailable ? "connected" : "disconnected";
Snackbar snack = Snackbar
.make(findViewById(R.id.activity_main), "Network Status : " + networkStatus, Snackbar.LENGTH_SHORT);
View sbView = snack.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
if (networkStatus=="connected") {
snack.show();
}
else if(networkStatus=="disconnected"){
snack.make(findViewById(R.id.activity_container), "Network Status : " + networkStatus, Snackbar.LENGTH_SHORT);
snack.show();
}
unregisterReceiver(mHandleMessageReceiver);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
};
NetworkStateChangeReceiver.java
public class NetworkStateChangeReceiver extends BroadcastReceiver {
public static final String NETWORK_AVAILABLE_ACTION = "com.example.arun4fms.efix.NetworkStateChangeReceiver";
public static final String IS_NETWORK_AVAILABLE = "isNetworkAvailable";
@Override
public void onReceive(Context context, Intent intent) {
Intent networkStateIntent = new Intent(NETWORK_AVAILABLE_ACTION);
networkStateIntent.putExtra(IS_NETWORK_AVAILABLE, isConnectedToInternet(context));
context.sendBroadcast(networkStateIntent);
}
private boolean isConnectedToInternet(Context context) {
try {
if (context != null) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
}
return false;
} catch (Exception e) {
Log.e(NetworkStateChangeReceiver.class.getName(), e.getMessage());
return false;
}
}
}
你可以尝试让snackBar.dismiss();在显示之前,但是如果每次触发3次,它在你的逻辑中是不合适的 –