y***@126.com
y***@126.com
  • 发布:2016-10-09 20:00
  • 更新:2016-10-09 20:00
  • 阅读:2193

如何监听socket 目前使用 var thd = new Thread(Runnable) ; 总是阻塞主线程

分类:MUI

function ConnectEqu(mac_address){
var table = document.body.querySelector('#listFetus');
removeElement(table);
main = plus.android.runtimeMainActivity();
UUID = plus.android.importClass("java.util.UUID");
uuid = UUID.fromString(FETUS_UUID);
Context = plus.android.importClass("android.content.Context");
BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
plus.android.importClass(BManager); //引入相关的method函数
BAdapter = BManager.getAdapter();
plus.android.importClass(BAdapter);
device = BAdapter.getRemoteDevice(mac_address);
plus.android.importClass(device);
bluetoothSocket=null;
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
plus.android.importClass(bluetoothSocket);
if(!bluetoothSocket.isConnected()) {
bluetoothSocket.connect();
}
if(bluetoothSocket.isConnected()) {
isOpen=true;
var Thread = plus.android.importClass('java.lang.Thread');
var Runnable = plus.android.implements("java.lang.Runnable", {
"run":function( ){
// while(1)
// {
console.log( "Invoked Object’s wahaha: " );
ReadThread();
// Thread.sleep(1000);
// }
}
} );
// main.runOnUiThread(Runnable);
var thd = new Thread(Runnable) ;
thd.start();

        }   

}

 function ReadThread(){  
     var inputStream = bluetoothSocket.getInputStream();  
            plus.android.importClass(inputStream);   
            var msg =null;                   
         try{  
            while(isOpen){  
              var  msg=inputStream.read();   

// console.log("800");
parseData(msg);
//时间判断 begin
if(CheckEnd()==true){
isOpen=false;
bluetoothSocket.close();
setFetusList();
showFetusList();
};
}
//地址:http://ask.dcloud.net.cn/question/60
}catch(err){
console.log("异常"+err);
bluetoothSocket.close();
}
}

2016-10-09 20:00 负责人:无 分享
已邀请:
y***@126.com

y***@126.com (作者) - 技术交流

目前中这种方法总是阻塞线程,还有别的办法可以开启多线程吗?

该问题目前已经被锁定, 无法添加新回复