2012-04-12 5 views
3

を書く私はここに掲載の例を使用して毎分を実行しているバックグラウンドアラームを持っています。アンドロイド - AsyncTaskソケットがタイムアウト

Alarm Manager Example

(私はネットワークトランザクションをしていますので)私の実際のアラームが見えると、AsyncTaskを起動しますこのように:

Socket sock = new Socket("hostname.com", 1234); 
     OutputStream out = sock.getOutputStream(); 
     String data = "beth"; 
     out.write(data.getBytes()); 
     sock.close(); 

ネットワーク接続が不安定な場合には、このタイムアウトを作るための最も簡単な方法は何ですか?私はすでに電話が無線LANに接続されているかどうかをチェックしています。

setSoTimeoutは私が使いたいものと似ていますが、コンテンツを受信して​​いるソケットにしか見えません。接続に失敗した場合、数秒後に接続を諦めてください。最初のコメントを受けて

私が実行していた前に:

new Checkin().execute(); 

私は今実行してください:

new Checkin().get(10000, TimeUnit.MILLISECONDS); 

10秒後にタイムアウトするには?これで10秒後にasynctaskが停止しますか?

+1

この質問はあなたを助けることができます: http://stackoverflow.com/questions/7882739/android-setting-a-timeout-for-an -asynctask – kmb64

+0

ありがとう!上記の私の追加したコードを見てください - これは私が欲しいものを達成するための適切な方法ですか? – xur17

+0

上記のコードを試しましたが、asynctaskをまったく実行していないわけではありません。私はここで何か誤解していますか? – xur17

答えて

0

使用して()メソッドの接続

Socket socket = new Socket(); 
socket.connect(new InetSocketAddress(ipAddress, port), 10000); 
+0

N.B.これにより*接続*タイムアウトを設定することができますが、 'out.write()'にはタイムアウトが与えられません。 OPが探していたものはわかりませんが、後者(または両方)が必要な場合もあります。 – LarsH

関連する問題