java– 在android中连续检查Internet连接的最佳方法是什么

java– 在android中连续检查Internet连接的最佳方法是什么,第1张

概述我正在开发一个应用程序.在那一个屏幕上检查Internet连接,紧接在onCreate()方法之后.如果网络连接良好,我正在为加载国家列表调用一个AsyncTask类,并在spinnerView中在屏幕上显示它.如果没有网络连接,我向用户显示ToastMessage并调用check_Network(AsyncTask).在这个类受保护的Lon

我正在开发一个应用程序.在那一个屏幕上检查Internet连接,紧接在onCreate()方法之后.如果网络连接良好,我正在为加载国家列表调用一个AsyncTask类,并在spinnerVIEw中在屏幕上显示它.如果没有网络连接,我向用户显示Toast Message并调用check_Network(AsyncTask).在这个类受保护的Long doInBackground(URL … params)方法我正在检查网络连接与否如果连接呼叫国家AsyncTask,否则我再次调用check_Network(AsyncTask).此过程重复,直到网络连接.我的问题是重复检查网络是正确的方法.请建议我.抱歉,我的英语很差,请理解.我正在展示我的代码

if (CheckNetwork.isOnline(this)) {            try {                new CountryProcess().execute();            } catch (Exception e) {                e.printstacktrace();            }        } else {            Toast.makeText(                    getApplicationContext(),                    getString(R.string.network_connection_fail)                            + "!", Toast.LENGTH_LONG).show();            new NetWork_connectivity().execute();}//.......................//class NetWork_connectivity extends AsyncTask<URL, Integer,Long>    {        @OverrIDe        protected Long doInBackground(URL... params)        {            if (CheckNetwork.isOnline(MainActivity.this)) {                new CountryProcess().execute();            }else            {                new NetWork_connectivity().execute();            }            return null;        }    }

解决方法:

在清单中添加以下代码,用于添加具有连接更改意图的接收器

<receiver androID:name=".NetworkStateReceiver">   <intent-filter>      <action androID:name="androID.net.conn.CONNECTIVITY_CHANGE" />   </intent-filter></receiver><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE" />

在接收方,获取与意图相关的额外内容并检查状态.因此,只要网络状态发生变化,您就会收到通知,然后相应地执行您的任务.

public class NetworkStateReceiver extends broadcastReceiver {public voID onReceive(Context context, Intent intent) { super.onReceive(context, intent); if(intent.getExtras()!=null) {    NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);    if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {        //connected    } } if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {        //not connected }}}

对于您的情况,您希望在清单中添加权限并在您的活动中注册接收者.

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);    registerReceiver(networkReceiver, filter);

在离开活动之前,请务必取消注册

unregisterReceiver(networkReceiver);private broadcastReceiver networkReceiver = new broadcastReceiver {    @OverrIDe    public voID onReceive(Context context, Intent intent) {     super.onReceive(context, intent);     if(intent.getExtras()!=null) {        NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);        if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {            //connected        }     }     //not connected    }}

根据您的要求,您只需要一次连接状态.首先检查连接性,如果没有连接则只注册接收器.

public boolean isNetworkConnected() {        ConnectivityManager cm =            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo netInfo = cm.getActiveNetworkInfo();        if (netInfo != null && netInfo.isConnectedOrConnecting()) {            return true;        }        return false;    }
总结

以上是内存溢出为你收集整理的java – 在android中连续检查Internet连接的最佳方法是什么全部内容,希望文章能够帮你解决java – 在android中连续检查Internet连接的最佳方法是什么所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存