2 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
我從您的問(wèn)題中得到的是,當(dāng)連接性發(fā)生變化時(shí),您希望獲得回調(diào)。所以我會(huì)回答。
NetworkChangeReceiver:
public class NetworkChangeReceiver extends BroadcastReceiver {
ConnectionChangeCallback connectionChangeCallback;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null
&& activeNetwork.isConnectedOrConnecting();
if (connectionChangeCallback != null) {
connectionChangeCallback.onConnectionChange(isConnected);
}
}
public void setConnectionChangeCallback(ConnectionChangeCallback
connectionChangeCallback) {
this.connectionChangeCallback = connectionChangeCallback;
}
public interface ConnectionChangeCallback {
void onConnectionChange(boolean isConnected);
}
}
現(xiàn)在,您的Activity應(yīng)該在BraodCastReceiver上調(diào)用setConnectionChangeCallback,即NetworkChangeReceiver的對(duì)象,并提供ConnectionChangeCallback的實(shí)現(xiàn)。
可能看起來(lái)像這樣?;顒?dòng):
public class YourActivity implments NetworkChangeReceiver.ConnectionChangeCallback
{
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
IntentFilter intentFilter = new
IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
NetworkChangeReceiver networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
networkChangeReceiver.setConnectionChangeCallback(this);
}
@Override
public void onConnectionChange(boolean isConnected) {
if(isConnected){
// will be called when internet is back
}
else{
// will be called when internet is gone.
}
}
}
添加回答
舉報(bào)