綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] Socket接收一陣子就當了

[複製連結] 查看: 1091|回覆: 1|好評: 0
跳轉到指定樓層
樓主
crazy82506 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-9-6 19:20

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
小弟有寫一個程式

放到手機裡啟動程式後

手機剛開始會定時接收資料

但是接收了一陣子程式就會當掉
可以幫我看一下是哪邊問題嗎
  1. private TimerTask tm2Task = new TimerTask(){
  2.                 public void run() {
  3.                         
  4.                         Message msg = new Message();
  5.                         InputStream ins;
  6.                         DataInputStream dos;
  7.                         int result;
  8.                         
  9.                         try {                                
  10.                                 
  11.                                 
  12.                         if (socket.isConnected())  {
  13.                                 
  14.                                 Thread.sleep(200);
  15.                         
  16.                                 ins = socket.getInputStream();
  17.                         
  18.                                 dos =new DataInputStream(ins);
  19.                
  20.                                 result = dos.available();
  21.                
  22.                 if (result==0) {  
  23.                         
  24.                         result=dos.available();
  25.                     
  26.                 }
  27.                
  28.                 else {
  29.                         
  30.                         byte[] data =new byte[result];
  31.                         
  32.                         dos.read(data);
  33.                         
  34.                         String message =new String(data);
  35.                         
  36.                         String str1 = message.substring(0,4);
  37.                         
  38.                         String str2 = message.substring(4);
  39.                         
  40.                         int INT1 = Integer.parseInt(str1);

  41.                         
  42.                     switch( INT1 ){
  43.                         
  44.                         case 1101:
  45.                                 
  46.                                 Bundle b1 = new Bundle();
  47.                                 
  48.                                 b1.putString("NAME1",str2);
  49.                                        
  50.                                     msg.setData(b1);
  51.                                        
  52.                                     msg.what = 1 ;
  53.                                        
  54.                                     handler.sendMessage(msg);
  55.             
  56.                         break;
  57.                         
  58.                         case 2201:
  59.                                 
  60.                                  Bundle b2 = new Bundle();
  61.                                 
  62.                                  b2.putString("NAME2",str2);
  63.                                        
  64.                                      msg.setData(b2);
  65.                                        
  66.                                      msg.what = 2 ;
  67.                                        
  68.                                      handler.sendMessage(msg);
  69.                                 
  70.                         break;
  71.                         
  72.                         case 3301:
  73.                                 
  74.                                  Bundle b3 = new Bundle();
  75.                                 
  76.                                  b3.putString("NAME3",str2);
  77.                                        
  78.                                      msg.setData(b3);
  79.                                        
  80.                                      msg.what = 3 ;
  81.                                        
  82.                                      handler.sendMessage(msg);
  83.                                 
  84.                         break;
  85.                         
  86.                         case 1102:
  87.                                 
  88.                                 Bundle b11 = new Bundle();
  89.                                 
  90.                                 b11.putString("NAME11",str2);
  91.                                 
  92.                                 msg.setData(b11);
  93.                                        
  94.                                     msg.what = 11 ;
  95.                                        
  96.                                     handler.sendMessage(msg);
  97.                                 
  98.                         break;
  99.                         
  100.                         case 2202:
  101.                                 
  102.                                 Bundle b22 = new Bundle();
  103.                                 
  104.                                 b22.putString("NAME22",str2);
  105.                                 
  106.                                 msg.setData(b22);
  107.                                 
  108.                                     msg.what = 22 ;
  109.                                        
  110.                                     handler.sendMessage(msg);
  111.                                 
  112.                         break;
  113.                         
  114.                         case 3302:
  115.                                 
  116.                                 Bundle b33 = new Bundle();
  117.                                 
  118.                                 b33.putString("NAME33",str2);
  119.                                 
  120.                                 msg.setData(b33);
  121.                                     
  122.                                 msg.what = 33 ;
  123.                                        
  124.                                     handler.sendMessage(msg);
  125.                                 
  126.                         break;
  127.                         
  128.                         
  129.                         
  130.                         }
  131.                         }
  132.                                 }
  133.                         } catch (UnknownHostException e) {                        
  134.                                 e.printStackTrace();
  135.                         } catch (IOException e) {                        
  136.                                 e.printStackTrace();
  137.                         } catch (InterruptedException e) {
  138.                                 e.printStackTrace();
  139.                         }
  140.                         
  141.                 }
  142.                
  143.         };
  144.         
  145.         Handler handler = new Handler() {
  146.                
  147.                 public void handleMessage(Message msg) {
  148.                         switch (msg.what){
  149.                           
  150.                         case 1:         
  151.                                 et1.setText(msg.getData().getString("NAME1"));
  152.                                 e1.setText("ON");        
  153.                         break;
  154.                            
  155.                         case 2:        
  156.                                   et2.setText(msg.getData().getString("NAME2"));
  157.                                   e2.setText("ON");
  158.                         break;
  159.                                     
  160.                         case 3:
  161.                                 et3.setText(msg.getData().getString("NAME3"));
  162.                                 e3.setText("ON");
  163.                         break;
  164.                         
  165.                         case 11:
  166.                                 et1.setText(msg.getData().getString("NAME11"));
  167.                                 e1.setText("OFF");
  168.                         break;
  169.                         
  170.                         case 22:
  171.                                 et2.setText(msg.getData().getString("NAME22"));
  172.                                 e2.setText("OFF");
  173.                         break;
  174.                         
  175.                         case 33:
  176.                                 et3.setText(msg.getData().getString("NAME33"));
  177.                                 e3.setText("OFF");
  178.                         break;


  179.                         
  180.                         }
  181.                 }
  182.         };
複製代碼

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 1幫助 +1 收起 理由
t92183014 + 1 讚一個!

查看全部評分

收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
whl | 收聽TA | 只看該作者
發表於 2013-9-6 21:34
1.貼 log
2.我記得 socket 是用 while 而不是用 timertask 去做 listen
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則