У меня есть действие, где у меня есть EditText, для ввода определенных данных. После того, как пользователь написали текст и нажал кнопку, он ждет ответа от BroadcastReceiver. Проблема в том, что все работает впервые и пользователь получает ответ, но если пользователь не выходит из операции и снова нажимает кнопку, 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;
Unregister приемник:
public void onPause() {
super.onPause();
getActivity().unregisterReceiver(mReceiver);
}
Что вы думаете? Почему он работает только при запуске активности и нажатии кнопки в первый раз?
Вы имеете в виду, что пользователь вышел из операции, вернитесь и снова нажмите кнопку? – CChi
@CChi, это работает. Если пользователь существует и возвращается, он работает. Проблема в том, что пользователь остается в действии и хочет нажать кнопку, например, 6 раз, только в первый раз, когда он щелкнет, это сработает. Еще пять раз он ничего не сделает. – user3339562
Do _not_ использовать бесконечный цикл в основном потоке, даже с 'sleep()' кто-то предложил. Вам не нужно постоянно проверять статус переменной. Просто запускайте любой код, «ожидающий» из 'onReceive()', когда он получает трансляцию. –