2011-12-26 6 views
3

私のアプリケーションは、NetConnectionを介してデータを(サーバーに)保存することです。 netが利用できない場合はローカルに保存し、netが利用可能になったらサーバーに再度送信します。私の問題はインターネット接続頻繁にをチェックすることです。私はネット接続をチェックするためのサービス機能を試しました。しかし、それは一度しか電話しませんでした。私の問題を解決する方法。誰でも親切に私を助けてください 事前に感謝!Androidでインターネット接続を確認するには頻繁に利用できますか?

更新

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(); 
     } 
    }; 
} 
+0

何が例外です。 Please log out –

答えて

0

OnCreate関数は、()サービスのライフサイクル全体で一度だけ実行されますので、あなたはTimerTaskを代わりのサービスにコードを書く必要があります。

mTimerTask = new TimerTask() { 

    @Override 
    public void run() { 

     ConnectivityManager conMgr = (ConnectivityManager) getSystemService  (Context.CONNECTIVITY_SERVICE); 
     if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) { 
      Toast.makeText(this, "net Started", Toast.LENGTH_LONG).show(); 
      saveData(); 
     } 

    } 
}; 

// 5秒ごと

mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(mTimerTask,1000,5000); 
+0

私の更新Sujit、例外になる(Null Pointer Exception) – Mercy

+0

ブロードキャストレシーバまたはサービスを使用して、バックグラウンドインターネットが動作しているかどうかをチェックします。 – jack

13

でインターネット接続を確認してくださいあなただけの接続の変更を聴くための受信機を登録し、任意のタイマーなしでそれを行うことができます。

<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> 

および接続かどうかを確認設立:

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 
     } 

    } 
} 
+1

最終的なsaveData dh =新しいsaveData(this);私はここでコンテキストを渡すことはできません私はBroadcastReceiverを拡張する場合。 – Mercy

+0

'this'は' Activity'のインスタンスだと思いますか?あなたは何のために活動を渡しますか?通常は「コンテキスト」で十分です。 – Jin35

+0

コンストラクタsaveData(new BroadcastReceiver(){})は未定義です。私はこのsir.Againのようにエラーを受け取りました。私は自分のコードを更新します – Mercy

関連する問題