在项目中,有如下需求:Android客户端向服务器发送数据,收到服务器返回的数据发送成功标识后,客户端即与服务器建立数据一来一往的心跳连接,若服务器端断开时,客户端接收到通知,关闭Service停止发送数据;代码如下:
public class BackService extends Service {
private static final String TAG = "BackService";
/** 心跳检测时间 */
private static final long HEART_BEAT_RATE = 3* 1000;
/** 主机IP地址 */
private static String HOST = "192.168.1.30";
/** 端口号 */
public static final int PORT =10801;
/** 消息广播 */
public static final String MESSAGE_ACTION = "org.feng.message_ACTION";
/** 心跳广播 */
public static final String HEART_BEAT_ACTION = "org.feng.heart_beat_ACTION";
private long sendTime = 0L;
private Socket socket;
private ReadThread mReadThread;
private InputStream is;//输入流
private int count;//读取的字节长度
private IBackService.Stub iBackService = new IBackService.Stub() {
@Override
public boolean sendMessage(String message) throws RemoteException {
return sendMsg(message);
}
};
@Override
public IBinder onBind(Intent arg0) {
return (IBinder) iBackService;
}
@Override
public void onCreate() {
super.onCreate();
HOST= (String) Utils.getShare(this, ConfigUrl.SERVER_IP,"ip");
Log.i(TAG,"ip-->"+HOST);
Log.i(TAG,"port-->"+PORT);
new InitSocketThread().start();
}
// 发送心跳包
private Handler mHandler = new Handler();
private Runnable heartBeatRunnable = new Runnable() {
@Override
public void run() {
ReadThr