Android interacts between activity and broadcast receiver

I have an activity that displays some data received from the server. If there is no connection, activity displays some cached data; if a connection is available, the activity retrieves the data and displays it. Everything works as expected. Now I want my activity to reload data as soon as the connection occurs. I use a simple receiver that extends BroadcastReceiver:

public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null) {
            //what to do here? 
        } 
     }
}

The broadcast receiver is declared in my manifest file as follows:

<receiver android:name=".ConnectionChangeReceiver"
          android:label="NetworkConnection">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
</receiver>

In my activity, I register a receiver:

ConnectionChangeReceiver receiver = new ConnectionChangeReceiver (); this.registerReceiver (receiver, new IntentFilter (ConnectivityManager.CONNECTIVITY_ACTION));

, . onReceive, ? , , , . ConnectionChangeReceiver ? ?

+5
2

, - . . , .

, , . enugh - - , , "" , . , , , . reg .

+11

!

. , BroadcastReceiver . .

. 3 .

1)

public interface MyListerner{

    public void performSomething(String arg);

} 

2) ConnectionChangeReceiver

public class ConnectionChangeReceiver extends BroadcastReceiver {

      private MyListerner listener;

      @Override
      public void onReceive(Context context, Intent intent) {

            listener = (MyListerner )context;  // initialse

            ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
            if (activeNetInfo != null) {

              listener.performSomething("Some data");   // Call listener method

            } 
      }
}

3)

public class YourActivity implements MyListerner{

      // Activity relate stuff onCreate() etc 

     public void updateUI(String result){
         // Your code to update UI
     }

     @Override
     public void performSomething(String arg){
           updateUI(arg);
     }

}

:

0

All Articles