Manish
Manish

Reputation: 43

Android : run in background whenever internet connected

Hello Guys I have just a simple question that how to run some block of code in android continuously in background,

The situation is to check the internet connected or not and accordingly it will upload the files on the server.(This will be running continuously in background.)

I am getting something like BroadcastReceiver, but I think its only to check the internet connection.

It will help a lot if someone give a block of code and make me understand...

Thanks !!!!!

Upvotes: 0

Views: 1939

Answers (1)

SGX
SGX

Reputation: 3353

I'll give you an example

You can easily check your connection by this

Create NetworkUtils class:

public class NetworkUtil {
    public static final int NOT_CONNECTED = 0;
    public static final int WIFI = 1;
    public static final int MOBILE = 2;
    public static int getConnectionStatus(Context context){
        ConnectivityManager connectivityManager =
                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if(networkInfo != null){
            if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI){
                return WIFI;
            }
            if(networkInfo.getType() == ConnectivityManager.TYPE_MOBILE){
                return MOBILE;
            }
        }
        return NOT_CONNECTED;
    }
}

Create NetworkConnectivityCheck class:

public class NetworkConnectivityCheck {
    public boolean internetAvailable = false;
    private BroadcastReceiver networkChangeReceiver;

    NetworkConnectivityCheck(){

        this.networkChangeReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                int networkState = NetworkUtil.getConnectionStatus(context);
                if(networkState == NetworkUtil.NOT_CONNECTED){
                    internetAvailable = false;
                    MainActivity.tvStatus.setText("OFFLINE");

                } else if(networkState == NetworkUtil.MOBILE){
                    internetAvailable = true;
                    MainActivity.tvStatus.setText("ONLINE"); // you do something here.
                } else if(networkState == NetworkUtil.WIFI){
                    internetAvailable = true;
                    MainActivity.tvStatus.setText("ONLINE"); // you do something here
                }
            }
        };
    }



    public void register(Context context){
        context.registerReceiver(networkChangeReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }
    public void unregister(Context context){
        context.unregisterReceiver(networkChangeReceiver);
    }
}

And main activity:

public class MainActivity extends AppCompatActivity {
    private NetworkConnectivityCheck networkConnectivityCheck;

    public static TextView tvStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvStatus = (TextView)findViewById(R.id.tvStatus);

        networkConnectivityCheck = new NetworkConnectivityCheck();
        networkConnectivityCheck.register(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        networkConnectivityCheck.register(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        networkConnectivityCheck.unregister(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        networkConnectivityCheck.unregister(this);
    }
}

Upvotes: 2

Related Questions