繁体   English   中英

android检查与BroadcastReceiver的互联网连接

[英]android check internet connection with BroadcastReceiver

我尝试用BroadcastReceiver检查互联网连接。我写了一些代码可以检查连接。现在,我想每5分钟检查一次连接,例如,这是我的代码

public class BroadCastSampleActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
            getApplicationContext().registerReceiver(
                    mConnReceiver,
                    new IntentFilter(
                            ConnectivityManager.CONNECTIVITY_ACTION));

        }
    }, 2000);
}

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        boolean noConnectivity = intent.getBooleanExtra(
                ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
        String reason = intent
                .getStringExtra(ConnectivityManager.EXTRA_REASON);
        boolean isFailover = intent.getBooleanExtra(
                ConnectivityManager.EXTRA_IS_FAILOVER, false);

        NetworkInfo currentNetworkInfo = (NetworkInfo) intent
                .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
        NetworkInfo otherNetworkInfo = (NetworkInfo) intent
                .getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);

        if (currentNetworkInfo.isConnected()
                || otherNetworkInfo.isConnected()) {
            Toast.makeText(getApplicationContext(), "Connected",
                    Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Not Connected",
                    Toast.LENGTH_LONG).show();
        }
    }
};

}

我如何写信可以每次(每5分钟)检查一次连接,如果有人知道解决方案,请帮助我。谢谢

您应该使用AlarmManager检查Internet连接。检查官方示例并查看此tut 我希望它能解决问题

您可以使用Timer以固定的间隔重复执行任务。

Timer timer = new Timer();
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        boolean internetConnected = checkInternetConnection();
    }

}, 0, 300000);  //for repeating every 5 minutes

public boolean checkInternetConnection (){
    //your code
}

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM