[问题] 静态广播问题

楼主: lihohsin (新)   2021-07-10 15:19:18
小弟一个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有成功发送接收
但接收之后要等到手机进入休眠之后才会执行
这要怎么解决呢?有没有什么好办法

Links booklink

Contact Us: admin [ a t ] ucptt.com