在Android中,检查可用的Internet连接频繁? [英] In Android To Check the Internet Connection is Available for Frequently?

查看:131
本文介绍了在Android中,检查可用的Internet连接频繁?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

海我的应用程序保存(到服务器)数据通过NetConnection。如果净是不可用我保存在本地,然后当电网重新可用发送到服务器。我的问题是检查 Internet连接Frequetly 。所以我尝试了服务功能,用于检查网络连接。但是,所谓的只有一次。如何解决我的问题。有人好心帮我 在此先感谢!

更新

 包com.android.cdtech;

进口android.app.Activity;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.database.Cursor;
进口android.net.ConnectivityManager;
进口android.view.View;

类ReceiverName延伸活动{
    BroadcastReceiver的R =新的BroadcastReceiver(){

    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        ConnectivityManager厘米=((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
        如果(厘米== NULL)
            返回;
        如果(cm.getActiveNetworkInfo()=空&安培;!&安培; cm.getActiveNetworkInfo()isConnected()){
            保存数据();
        } 其他 {
            //什么都不做或以某种方式通知用户
        }

    }
    // code处理broadcase

    私人无效SAVEDATA(){
        最后SAVEDATA DH =新SAVEDATA(本); //创建数据库类
        WebService的calService =新的WebService();
        dh.open();
        光标C = dh.pay();

        字符串文本=;
        做 {
            文=文++\ N+ c.getString(4);
            的System.out.println(c.getCount());
            // Toast.makeText(此,名称:+ c.getString(1)+ c.getString(2)+ c.getString(3)+ c.getString(4)+,Toast.LENGTH_LONG).show ();
            calService.paymentReceipt(PaymentReceipt,c.getString(1),c.getString(2),c.getString(3),c.getString(4),克力,0);
         }
         而(c.moveToNext());
         dh.close();
        }
    };
}
 

解决方案

您可以不用任何计时器,只登记接收器监听连接更改:

 <接收机器人:名称=。ReceiverName>
    <意向滤光器>
        <作用机器人:名称=android.net.wifi.STATE_CHANGE/>
        <作用机器人:名称=android.net.conn.CONNECTIVITY_CHANGE/>
    &所述; /意图滤光器>
< /接收器>
 

,并检查是否建立连接:

 公共类ReceiverName扩展的BroadcastReceiver {
    @覆盖
    公共无效的onReceive(上下文的背景下,意图意图){
        ConnectivityManager厘米=((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
        如果(厘米== NULL)
            返回;
        如果(cm.getActiveNetworkInfo()=空&安培;!&安培; cm.getActiveNetworkInfo()isConnected()){
            //发送这里
        } 其他 {
            //什么都不做或以某种方式通知用户
        }

    }
}
 

Hai my Application is to Save (to Server) the Data through NetConnection. If net is not Available i saved Locally, and then when net is available again send to the server. My problem is to check Internet Connection Frequetly.So i tried the Service function for checking the Net connection. But it called once only. How to solve my Problem. Anybody kindly help me Thanks in advance!

update

package com.android.cdtech;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.view.View;

class ReceiverName extends Activity {
    BroadcastReceiver r = new BroadcastReceiver(){

    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
        if (cm == null)
            return;
        if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
            saveData();
        } else {
            // Do nothing or notify user somehow
        }

    }
    // code to handle broadcase

    private void saveData() {
        final saveData dh=new saveData(this); //Class for Creating a Database
        webService calService=new  webService();
        dh.open();
        Cursor c = dh.pay();

        String text = "";
        do {
            text = text + " " + "\n" + c.getString(4);
            System.out.println(c.getCount());
            // Toast.makeText(this,"Name:" +c.getString(1)+c.getString(2)+c.getString(3)+c.getString(4)+"",Toast.LENGTH_LONG).show();
            calService.paymentReceipt("PaymentReceipt", c.getString(1), c.getString(2), c.getString(3), c.getString(4), "gf", "0");
         }
         while (c.moveToNext()); 
         dh.close();
        }
    };
}

解决方案

You can do it without any timers, just register receiver for listening connection changes:

<receiver android:name=".ReceiverName" >
    <intent-filter >
        <action android:name="android.net.wifi.STATE_CHANGE" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

And check if connection established:

public class ReceiverName extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
        if (cm == null)
            return;
        if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
            // Send here
        } else {
            // Do nothing or notify user somehow
        }

    }
}

这篇关于在Android中,检查可用的Internet连接频繁?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆