-1

アプリの起動時に2つのWebサービスを呼び出しましたが、それらはバックグラウンドで実行されています。

各サービスには約35〜40秒かかります。これらのサービスが完了するまで、各タブをクリックするとローダーが表示されます。ここで、TabActiviyには4つのアクティビティがあります。これらのサービスが完了するたびに、ローダーを非表示にしてデータを表示します。

さて、私の質問は?ネットワークに障害が発生した場合にサービスがバックグラウンドで実行されているときに、プロセスがネットワークによって中断されるダイアログボックスでユーザーにどのように親密にする必要がありますか?

Androidで10秒以内にネットワーク接続を確認する機会はありますか?ダイアログでユーザーと親密になり、サービスを再開できるようにするには?

前もって感謝します。

4

3 に答える 3

0

次のコードを試してください。

TimerTask refresher;


                  // Initialization code in onCreate or similar:

                  timer = new Timer();    
                  refresher = new TimerTask() {
                      public void run() {
                          handler.sendEmptyMessage(0);
                      };
                  };
                  // first event immediately,  following after 1 seconds each
                  timer.scheduleAtFixedRate(refresher, 0, 65); 


 @SuppressLint("HandlerLeak")
        final Handler handler = new Handler() {
             public void handleMessage(Message msg) {
                 switch (msg.what) {
                 case REFRESH:


                     break;
                 default:
                     break;
                 }
             }
         };

それは私にとって魅力のように働きました..これがあなたを助けることを願っています.

于 2012-11-12T13:10:56.020 に答える
0

Timerと Android ConnectivityManagerを使用できます。

new Timer().scheduleAtFixedRate(checkCon, 10, 10);

private boolean checkCon() {
  ConnectivityManager conMgr =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

  if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED 
      &&  conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
    return false;
  }
  return true;
}

checkCon()falseモバイルへの接続 (conMgr.getNetworkInfo(0)) および Wifi (conMgr.getNetworkInfo(1)) が切断されている場合に返されます。

于 2012-11-12T13:01:06.540 に答える
0

HTTP 接続を使用する場合 - try-catch で囲み、ネットワーク データをブロックし、何かが発生した場合にエラー メッセージを表示します。

Runnableターゲットを追加Service

new Runnable() {

    @Override
    public void run() {
        while(true){
            if(socket.isConnected()){

            }else{
                // show error and call dialog
            }
        }
    }
};

ソケットを使用している場合

于 2012-11-12T13:00:13.633 に答える