Java 如何在每10-15秒后连续检查互联网连接?

Java 如何在每10-15秒后连续检查互联网连接?,java,android,eclipse,android-intent,Java,Android,Eclipse,Android Intent,我正在开发一款具有以下要求的应用程序1)它应该在后台连续检查互联网连接2)当发现连接时,它应该自动发送电子邮件3)如果未找到连接,它应该等待并在每10或15秒后继续检查连接。我已经搜索了一遍又一遍,但在任何地方都找不到连接检查问题。我是android开发的新手。请帮我解决这个问题。谢谢。为你的应用程序设置报警管理器,每15秒检查一次互联网连接。Alarm manger广播一个您可以执行任务的意图。您可以使用一个广播接收器,该接收器将检查互联网连接,并在网络发生任何变化时调用它 public cl

我正在开发一款具有以下要求的应用程序1)它应该在后台连续检查互联网连接2)当发现连接时,它应该自动发送电子邮件3)如果未找到连接,它应该等待并在每10或15秒后继续检查连接。我已经搜索了一遍又一遍,但在任何地方都找不到连接检查问题。我是android开发的新手。请帮我解决这个问题。谢谢。

为你的应用程序设置报警管理器,每15秒检查一次互联网连接。Alarm manger广播一个您可以执行任务的意图。

您可以使用一个广播接收器,该接收器将检查互联网连接,并在网络发生任何变化时调用它

public class ConnectivityReceiver extends BroadcastReceiver {
private static boolean firstConnect = true;

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


    final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    final NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

    if (activeNetInfo != null) {
        boolean isConnected = activeNetInfo.isConnected();
        boolean isWiFi = activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI;
        boolean isMobile = activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE;

        if (firstConnect) {

            firstConnect = false;

            //checks for the type of network, device is connected to.
            if (isConnected && isWiFi) {
                if(!Utilities.isReleaseMode(context)){
                    Toast.makeText(context, "Connected to Internet", Toast.LENGTH_SHORT).show();
                }
                Log.i("Wifi Network connected", "wifi Network connected");

            } else if (isConnected && isMobile) {
                if(!Utilities.isReleaseMode(context)) {
                    Toast.makeText(context, "Connected to Internet", Toast.LENGTH_SHORT).show();
                }
                Log.i("Mobile Network ", "mobile Network connected");

            }
        }

    } else {
        firstConnect = true;
        //  Log.i("Network Disconnected", "Network Disconnected");
    }
}

使用alaram每隔10或15秒调用此函数

public static boolean isOnline(Context context) {// requires network state
                                                    // access permisstion
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

 final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                @SuppressWarnings("unchecked")
                public void run() {
                    try {
                        isOnline(getActivity());
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                    }
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 0, 10000);

为什么是Javascript标签?它与android开发的关系如何?1)使用计时器2)Ping/向您的服务器发送消息,即您希望在这段时间内到达的服务器3)通常您希望使用退避机制,即每次无法到达服务器时,等待时间都会增加,因为这会导致服务器上的负载,gmail实现等待机制的方式。添加后台服务。
>500
这样的问题在SO中已经有了。询问前搜索您是否建议使用isSync功能?它是如何工作的?网络的变化可能与internet连接恢复无关,最好是联系真正的服务器检查连接。性能方面,我更喜欢使用广播接收器,而不是定期呼叫真正的服务器。我更喜欢我提到的退避机制,每次尝试ping失败都会增加等待时间,这是几乎许多应用程序的实现方式。如果您能详细介绍alarm manager的使用,这将非常有用!!阅读此文档了解如何在应用程序中设置Alarm manager,但这只会检查internet连接。我想补充更多的细节,它应该不断地检查互联网。如果找到连接,它应该从内部存储器中获取我的文件并自动发送。将此函数调用到异步任务中,它将自动返回@AvantiBhandarkar
public static boolean isOnline(Context context) {// requires network state
                                                    // access permisstion
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

 final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                @SuppressWarnings("unchecked")
                public void run() {
                    try {
                        isOnline(getActivity());
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                    }
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 0, 10000);