討論區快速選單
知識庫快速選單
開發App該選哪個平台? 討論區最近新進100則主題 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
String判斷是否為null沒反應
更改我的閱讀文章字型大小
作者 : uobik(Uobik)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/6/28 上午 06:53:18
請各位高手幫幫我
我寫一個用socket跟電腦傳輸並拆解json的app
可是程式跑到某個點就沒繼續往下做了

附上程式碼
while (clientSocket.isConnected()) {
     // 取得網路訊息
     tmp = br.readLine(); //宣告一個緩衝,從br串流讀取值
     TextView01.setText("get_tmp = " + tmp);

     // 如果不是空訊息
     if(tmp!=null){
     tmp=tmp.substring(tmp.indexOf("{"), tmp.lastIndexOf("}") + 1);
     json_read=new JSONObject(tmp);
     stmp = (String) json_read.get("action");
     TextView01.setText("tmp is not null");
    
     if (stmp.equals("set_marker")){
     lat[i] = (String) json_read.get("lat");
     lng[i] = (String) json_read.get("lng");
     title[i] = (String) json_read.get("title");
     phone[i] = (String) json_read.get("phone");
     time[i] = (String) json_read.get("time");
     i++;
     TextView01.setText("save_marker");
     }
    
     if (stmp.equals("done")){
     json_write.put("action", "leave");
     bw.write(json_write + "\n");
     bw.flush();
     bw.close();
     br.close();
     clientSocket.close();
     goto_map();
     }
     }
     }

執行後手機上TextView01顯示的是
get_tmp=
{"lng":"121.6111837","phone":"0226311524","action":"set_marker","time":"07:00~22:00","title":"台灣中油東湖站","lat":"25.0630581"}

請問為什麼程式不執行if(tmp!=null)裡面的內容
另外我發現在第一次寫入手機執行的時後(從android studio按綠色箭頭給已連結的手機跑)
會出現這種卡住的狀況

但我按返回鍵離開,點icon再執行則不會卡住,順利跑到我要的goto_map()那邊
就算去設定->應用程式裡面,把它強制停止+清除資料,再回到桌面點icon執行,也能過關不會卡

我測試了手機重新開機,第一次點icon執行時又卡住了
請問各位高手這種狀況該怎麼辦?

作者 : bobcheng(Bob)
[ 貼文 49 | 人氣 1441 | 評價 90 | 評價/貼文 1.84 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/6/28 上午 09:50:45
初學者常常分不清null和""是不同的,這也是人之常情
懶的打字說明了,麻煩自己google一下差別吧
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4464 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人uobik註記此篇回應為很有道理 2016/6/28 下午 01:17:07
http://www.tutorialspoint.com/java/io/bufferedreader_readline.htm
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4464 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人uobik註記此篇回應為最佳解答 2016/6/30 下午 10:44:18
ddms & logcat can help you to debug it
作者 : uobik(Uobik)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/7/1 上午 06:01:30
謝謝各位前輩
我找到問題了
是我在action為done的時候,做了跟onDestroy一樣的事情
json_write=new JSONObject();
json_write.put("action","leave");
bw.write(json_write+"\n");
bw.flush();
bw.close();
br.close();
clientSocket.close();

導致onDestroy時出錯,程式就卡住了
另外setText的內容還停在if(tmp!=null)之前
可能是尚未即時更新,程式就出錯了,讓我誤以為下面的沒跑到
 板主 : 徵求中
 > Android - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Android - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Android
1 ozzy 340 
2 Jeffrey 110 
3 克理斯 110 
4 20100410 100 
5 farastein 90 
6 蓋柏拉許 70 
7 member one 60 
8 joe 50 
9 panda121 50 
10 kk 50 
Android
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125