关于android socket通信接收服务器数据有关问题

关于android socket通信接收服务器数据问题
先说一下我遇到的问题,我想通过android手机socket通信接收server发送过来的16进制数据,下面是我客户端的代码,当我写的应用程序只有这一个activity时,测试是可是实现 从server发送的数据的。但是当我把这个activity加入到一个应用程序中,通过A界面跳转到这个界面后,再点击button,程序就会一直没响应,通过logcat,发现程序停在了nReadLen = dis.read(buffer, nIdx, nTotalLen - nIdx);处。不知道问题出现在什么地方求解释,为什么相同的代码,经过这么一挪动们就出现这个问题,麻烦各位给分析一下问题所在,谢谢,

package com.carman.activity;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.carman.activity.R;

public class ReceiveDataActivity extends Activity {

private TextView textview1;
private Button btn;

byte[] relayState = new byte[2];//保存终端设备状态
HandlerThread handlerThread = new HandlerThread("handler_thread");
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findView();
        
        btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Socket socket = null;
        int objContentleng = 24;
        //fc 4b 1f 25
        byte[] buffer = new byte[objContentleng]; 
        byte[] relayState = new byte[2];// 第一位是0x25地址的状态,第二位为0x4b地址的状态
        int nIdx = 0; 
        int nTotalLen = buffer.length; 
        int nReadLen = 0;
        try {
            socket = new Socket("192.168.1.123",502);
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            while (nIdx < nTotalLen) 
            { 
                nReadLen = dis.read(buffer, nIdx, nTotalLen - nIdx);
                if (nReadLen > 0) 
                { 
                    nIdx = nIdx + nReadLen; 
                } 
                else 
                { 
                    break; 
                } 
            }
            for(int i = 0; i < objContentleng;i++)
            System.out.println(buffer[i]);
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        textview1.setText(buffer.toString());
}
});


    }
    public void findView(){