[問題] android Service ?

看板AndroidDev作者 (code)時間12年前 (2013/06/02 02:39), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/2 (看更多)
大家好,這次來問的問題是,是否有需要使用service,因為我看了書,範例是說 會不斷在背景執行,那這樣是否就不會影響到UI? 我的問題開始 首先我是要將數值傳給另一個class 讓它做續寫txt檔的動作,但是 可能是因為傳給另一個class的速度太快(1秒100筆)? 或可能是為了要改變UI的關係所以導致,我無法將程式關閉,因為連menu按了 都沒有反應,請問該如何解決? 程式碼我先列出(此片段會1秒執行100次) handleBuf[0]=dataBuf[1]*256+dataBuf[2]; handleBuf[1]=dataBuf[3]*256+dataBuf[4]; handleBuf[2]=dataBuf[5]; handleBuf[3]=dataBuf[6]; handleBuf[4]=dataBuf[7]*256+dataBuf[8]; String saveStr = dataBuf[0]+","+dataBuf[1]+","+dataBuf[2]+","+dataBuf[3]+"," +dataBuf[4]+","+dataBuf[5]+","+dataBuf[6]+","+dataBuf[7]+"," +dataBuf[8]+","+dataBuf[9]+"\n"; tvOutPutOne.setText(Integer.toString(handleBuf[2])); tvOutPutTwo.setText(Integer.toString(handleBuf[3])); Intent intent=new Intent(); intent.setClass(MainActivity.this,file.class); Bundle bundle=new Bundle(); bundle.putString("str",saveStr); intent.putExtras(bundle); startActivity(intent); 如果要解決無法將程式關閉,是否需要使用service幫我做存取動作就好 但是問題來了,因為我用startActivity(intent); 可以一直塞值進去intent 但是,該如何不斷給值,且service做處理? 因為我知道的方法是 Intent i = new Intent(Main.this,Service.class); startService(i); 但這我感覺,好像只能啟動service一次,沒辦法一直丟值? 整理一下問題 1. 上段程式碼,是否會因為不斷執行改變UI而造成無法點選MENU而,也無法關閉程式? 是否有解決方法? 2.若使用Service來幫我做存取動作,該如何從Main程式不斷丟值給Service? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.241.209.170 ※ 編輯: fake01 來自: 123.241.209.170 (06/02 02:41)

06/02 04:00, , 1F
Activity<->BroadcastReceiver<->Service
06/02 04:00, 1F

06/02 04:07, , 2F
如果要做比較耗資源的事 可以開另一個線程跑
06/02 04:07, 2F

06/02 04:59, , 3F
在service印log看thread name, 你會發現...
06/02 04:59, 3F

06/02 11:28, , 4F
service 照樣會ANR 你要用的是asynctask 或handler
06/02 11:28, 4F

06/02 19:10, , 5F
如果事情太長 或者完全與UI無關的話 就不適合用asyncta
06/02 19:10, 5F

06/02 19:10, , 6F
sk
06/02 19:10, 6F

06/02 19:12, , 7F
至於handler 如果沒給looper 預設拿到的多是main looper
06/02 19:12, 7F

06/02 19:12, , 8F
同樣還是要看事情與UI的關聯...
06/02 19:12, 8F

06/02 22:15, , 9F
直接new thread 然後跟UI有關的丟回handler?
06/02 22:15, 9F
文章代碼(AID): #1HgZ_biT (AndroidDev)
文章代碼(AID): #1HgZ_biT (AndroidDev)