2
我创建了一个服务,然后创建一个套接字,但只要试图读取从服务器发送的数据,它挂起,另一方面相同的代码运行,如果我不使用服务,但纯活动??Android套接字挂起
import android.app.*;
import android.content.*;
import android.os.*;
import android.util.*;
import java.net.*;
import java.io.*;
import android.widget.*;
public class BackgroundService extends Service
{
private Socket socket=null;
private InputStreamReader in=null;
private String ip;
private String tag="BackgroundService";
public IBinder onBind(Intent p1)
{
// TODO: Implement this method
return null;
}
public void onCreate(){
super.onCreate();
}
public void onStart(Intent i,int id){
super.onStart(i,id);
ip=i.getStringExtra("Ip");
Log.v(tag,"Ip "+i.getStringExtra("Ip"));
try
{
socket = new Socket(ip.trim(), 8888);
new Runnable() {
public void run()
{
// Hangs in this block.....
try
{
in = new InputStreamReader (socket.getInputStream());
BufferedReader bf=new BufferedReader (in);
// Never Reaches this messge
Log.v(tag,"mess:"+bf.readLine());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}.run();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
?那么线程是否根本就输入了run方法呢?此外,尝试先打开输出流。 Java中有关于Object ... Streams的问题,但我不确定它是否能解决您的问题。顺便说一句,你为什么使用Runnable但同步调用它?你想使用[Thread](http://developer.android.com/reference/java/lang/Thread.html)吗? –
是的套接字连接正常,即使我不使用runable它相同,生病尝试先调用outputstream然后inputstream – Rs9766
终于找出了它在Log.v中的缺陷,使用System.out.println工程 – Rs9766