我的activity,不知道把接收放到哪里能服务器发来数据就接收到,写在主线程就会阻塞,现在异步就能收到一次而且receive.setText(i);写不到EditText里面,好像和UI冲突了public class Socket1Activity<Runnalbe> extends Activity {
/** Called when the activity is first created. */
private EditText send=null;
private EditText receive=null;
private Button butSend=null;
Socket socket=null;
private Handler handler=new Handler();
private String i;
private String r;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
send=(EditText)findViewById(R.id.send);
receive=(EditText)findViewById(R.id.receive);
butSend=(Button)findViewById(R.id.btnSend);
try{
socket=new Socket("192.168.0.109",3456);
}catch(Exception e){
System.out.println("获取服务器端Socket监听端口失败!" );
}
butSend.setOnClickListener(new butSendListener());
HandlerThread handlerThread=new HandlerThread ("handler");
handlerThread.start();
MyHandler myHandler=new MyHandler(handlerThread.getLooper());
Message msg=myHandler.obtainMessage();
msg.sendToTarget();
}
class butSendListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String i=send.getText().toString();
try {
PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(i);
send.getText().clear();
out.flush();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyHandler extends Handler{
public MyHandler() {
// TODO Auto-generated constructor stub
}
public MyHandler(Looper looper){
super(looper);
}
public void handleMessage(Message msg)
{
try {
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String i=br.readLine();
receive.setText(i);
//System.out.println(i);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*try {
InputStream is=socket.getInputStream();
DataInputStream br=new DataInputStream(is);
String i=br.readLine();
if(i!=null){
receive.setText(i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
}
/** Called when the activity is first created. */
private EditText send=null;
private EditText receive=null;
private Button butSend=null;
Socket socket=null;
private Handler handler=new Handler();
private String i;
private String r;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
send=(EditText)findViewById(R.id.send);
receive=(EditText)findViewById(R.id.receive);
butSend=(Button)findViewById(R.id.btnSend);
try{
socket=new Socket("192.168.0.109",3456);
}catch(Exception e){
System.out.println("获取服务器端Socket监听端口失败!" );
}
butSend.setOnClickListener(new butSendListener());
HandlerThread handlerThread=new HandlerThread ("handler");
handlerThread.start();
MyHandler myHandler=new MyHandler(handlerThread.getLooper());
Message msg=myHandler.obtainMessage();
msg.sendToTarget();
}
class butSendListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String i=send.getText().toString();
try {
PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(i);
send.getText().clear();
out.flush();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyHandler extends Handler{
public MyHandler() {
// TODO Auto-generated constructor stub
}
public MyHandler(Looper looper){
super(looper);
}
public void handleMessage(Message msg)
{
try {
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String i=br.readLine();
receive.setText(i);
//System.out.println(i);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*try {
InputStream is=socket.getInputStream();
DataInputStream br=new DataInputStream(is);
String i=br.readLine();
if(i!=null){
receive.setText(i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货