[問題] 靜態廣播問題已刪文

看板AndroidDev作者 (新)時間2年前 (2021/07/10 15:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
小弟一個app 一個status的欄位有 order,accepted,shiped,delivered幾種狀態 問題: 一開始app介面上顯示order 在後台server將status 改成accepted,app會立刻發出通知status已經改成accepted 但是app介面沒有跟著顯示為accepted 代碼: app介面上 @Override protected void onResume() { super.onResume(); 使用asyncTask 異步任務方法,去server調取status的值 顯示在介面上 } 解決辦法/遇到難題: 由於將server的status的值改為accepted之後,app有收到通知但介面沒有跟著變 必須離開這頁,重新啟動activity之後,讓asyncTask再次抓取server的status的值 介面上才會顯示出accepted 後來想到的辦法是 broadcast/receiver的方式 在獲取通知的 public void onMessageReceived(RemoteMessage remoteMessage) { 加上 Intent intent2 =new Intent(); intent2.setAction("com.xxxxx"); intent2.setPackage("com.xxxxx"); sendBroadcast(intent2,null); 加入一個廣播 } 在接收receiver中寫入 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { 寫入AsyncTask方法,調取Server的status 然後修改app介面 } } 最後呢在介面的 onResume(){ AsyncTask方法 加上MyBroadcast物件 IntentFilter filter = new IntentFilter("com.xxxxx"); MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver(); registerReceiver(myBroadcastReceiver,filter); } 還有manifest.xml 加上 <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.xxxxx"></action> </intent-filter> </receiver> 結果呢,當server status 調成accepted時,app立刻收到通知 但是介面沒有跟著變更顯示為accepted 當手機進入locked狀態,解鎖之後 介面顯示就從order變成accepted 看起來broadcast有成功發送接收 但接收之後要等到手機進入休眠之後才會執行 這要怎麼解決呢?有沒有什麼好辦法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.60.240 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1625901561.A.9AB.html
文章代碼(AID): #1WwKdvch (AndroidDev)
文章代碼(AID): #1WwKdvch (AndroidDev)