0

サーバーとデバイスの間で維持されているユーザーのセッションで動作するアプリケーションがあります。ping手法を使用して、ユーザーがログインしている場合に1分ごとにサーバーにpingを実行することにより、デバイスとサーバー間のセッションを維持します。これは、バックグラウンドスレッドを使用して行われます。

  1. 画面をオフにしてデバイスを電源から切断すると、バックグラウンドスレッドが強制終了されることがあります。

  2. スレッドがアクティブな場合がありますが、WiFiアンテナがオフになり、pingが失敗します。

私のアプローチは正しいですか?これを行うためのより良い方法はありますか?

私の要件:さまざまな理由でセッションを存続させるために、毎分サーバーにpingを実行する必要があります。これは、ユーザーがログインしている場合にのみ実行する必要があります。

4

2 に答える 2

1

これを使用して、Wi-Fi接続を確認できます

private boolean checkInternetConnection()
{
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
    return conMgr.getActiveNetworkInfo().isConnectedOrConnecting();
}

checkInternetConnection()== falseの場合、マニフェストでこれを使用してWi-Fiをオンにできます

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

そしてこれはあなたのコードにあります

WifiManager wifiManager;
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
   wifiManager.setWifiEnabled(false);
}else{
   wifiManager.setWifiEnabled(true);
}

これがあなたの質問に対する正確な答えではありませんが、これがあなたの助けになることを願っています。

于 2011-05-12T08:02:35.380 に答える
0

、、、などのライフ サイクル イベントが発生したときに、 にメッセージLog.dを書き込むために使用します。また、ブロードキャスト イベントをログに記録する を作成すると、最も役立ちます。LogcatActivityonPauseonStoponDestroyonCreateonStartonResumeBroadcastReceiver

于 2011-05-12T01:15:08.607 に答える