UDP ブロードキャスト パケットの受信に大きな問題があります。私はおかしくなりそうだ...
問題は:
1-すべて正常に動作します。
2-パケットを受信できます。
3-Androidを閉じない場合(ホームボタンまたはキーオフが押されていない場合)、Androidをスリープ状態にします(画面オフ-> OnPauseおよびOnStop)
4-アクセスポイントをオフにします(外出をシミュレートするため、Wi-Fiなし)。
5-2分待ちます
6-アクセスポイントの電源を入れる
7-Android が起動すると、このシナリオでは常にタイムアウトが発生します。
別の時間にアプリを起動すると、Eclipse-> Timeout
アプリを破棄し (戻るボタン)、アプリを再起動 (onCreate) すると --> タイムアウト
ホームボタンを押してウェイクアップすると->タイムアウト
wifiを無効にしてから有効にすると-> OK、パケットを受信します
キーオフを押してウェイクアップすると-> OK、パケットを受信します
Asycntask do in background{
.....
byte[] message = new byte[1500];
s = new DatagramSocket(null);
s.setReuseAddress(true);
s.bind(new InetSocketAddress(dataclass.getDataclass().GGGPort));
p = new DatagramPacket(message, message.length);
s.setSoTimeout(500);
s.setBroadcast(true);
dataclass.getDataclass().setGoOut(true);
s.receive(p);
}
質問:
1-Androidを起動するためのホームボタンとキーオフボタンの違いは何ですか? 彼らは同じことをします-> OnPause、OnStop--> (ロック解除) OnRestart。wifiはどうなるの?
2-プログラムが実行されているのに受信していない場合、wifiを無効/有効にすると問題なく動作するのはなぜですか? それはコードがOKであることを意味します...それはアンドロイドの問題ですか?
PD: Asynctask OnStop を強制終了し、再起動時に実行します