[英]BroadcastReceiver fires only once
我有活動,在這里我有EditText供用戶輸入某些數據。 用戶寫了一些文本並單擊按鈕后,他正在等待來自BroadcastReceiver的響應。 問題是,一切都首次正常運行,並且用戶收到了響應,但是如果用戶沒有退出活動並再次單擊該按鈕,則BroadcastReceiver將不再觸發。 如果用戶關閉活動並再次將其打開,則BroadcastReceiver將再次工作,但僅是第一次。
這有點令人困惑。 這是我的代碼:
public void onCreate(Bundle savedInstanceState) {
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent in) {
switch (getResultCode()) {
case Activity.RESULT_OK:
mStatus = true;
break;
}
}
};
getActivity().registerReceiver(mReceiver,
new IntentFilter(FLAG));
}
當用戶單擊按鈕時:
Intent in = new Intent(FLAG);
PendingIntent pIn = PendingIntent.getBroadcast(context, 1, in, 0);
SmsManager.getDefault().sendTextMessage("123456789", null, "text", pIn, null);
while(!mStatus){
}
mStatus = false;
注銷接收者:
public void onPause() {
super.onPause();
getActivity().unregisterReceiver(mReceiver);
}
你怎么看? 為什么只有在啟動活動並首次單擊按鈕時它才起作用?
嘗試以下方法:
public void onPause() {
super.onPause();
// getActivity().unregisterReceiver(mReceiver);
}
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(mReceiver);
}
說明:您應該在onCreate()
/ onDestroy()
或onResume()
/ onPause()
管理接收器(相應的生命周期事件)。
編輯 :也進行此更改(第二行設置flag
參數):
Intent in = new Intent(FLAG);
PendingIntent pIn = PendingIntent.getBroadcast(context, 1, in, PendingIntent.FLAG_UPDATE_CURRENT);
SmsManager.getDefault().sendTextMessage("123456789", null, "text", pIn, null);
不知道這是否可以解決問題,因為我不知道0代表您使用該標志值。 FLAG_UPDATE_CURRENT
似乎正確。
編輯2 :
while(!mStatus){
}
你絕對不應該那樣做!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.