在android中,如果网络发生变化,如何更新活动

在android中,如果网络发生变化,如何更新活动,android,Android,在我的应用程序中,我有4项活动。如果网络发生任何变化,我希望更新处于前台状态的活动。我为网络变化编写了一个广播接收器。但我想从广播接收器更新活动 这是我的广播接收器: public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { final Con

在我的应用程序中,我有4项活动。如果网络发生任何变化,我希望更新处于前台状态的活动。我为网络变化编写了一个广播接收器。但我想从广播接收器更新活动

这是我的广播接收器:

public class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        final android.net.NetworkInfo mobile = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            // i need to update activity ?????
        }
    }
}
在清单文件中:

<application
    android:name=".MyApp"
    ....
</application>
创建新活动:

public class MyBaseActivity extends Activity {
    protected MyApp mMyApp;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMyApp = (MyApp)this.getApplicationContext();
    }
    protected void onResume() {
        super.onResume();
        mMyApp.setCurrentActivity(this);
    }
    protected void onPause() {
        clearReferences();
        super.onPause();
    }
    protected void onDestroy() {        
        clearReferences();
        super.onDestroy();
    }

    private void clearReferences(){
        Activity currActivity = mMyApp.getCurrentActivity();
        if (currActivity != null && currActivity.equals(this))
            mMyApp.setCurrentActivity(null);
    }
}
然后:

public class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        final android.net.NetworkInfo mobile = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            // i need to update activity ?????
            TextView tv = (TextView)myApp.getCurrentActivity().findViewById(R.id.your_view_id);
            tv.setText("Network is available");
        }
    }
}

向活动发送特殊意图以进行更新。但关于“更新活动”的问题非常广泛。如果网络不可用,活动中需要显示“无网络连接”。好的,那么是否要更改显示网络状态的文本?
public class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        final android.net.NetworkInfo mobile = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            // i need to update activity ?????
            TextView tv = (TextView)myApp.getCurrentActivity().findViewById(R.id.your_view_id);
            tv.setText("Network is available");
        }
    }
}