0

のフラグメントがありTextViewます。アプリのさまざまな場所からそれを更新したいTextViewので、使用してLocalBroadcastManagerいますが、常に機能しているわけではありません-実際、デバイス管理者を無効にすると(これはMDMアプリです)、データを受信することを「忘れます」...

    public static void sendMessage(String message) {
        MESSAGE = message;
        Intent intent = new Intent(MESSAGE_INTENT_FILTER);
        intent.putExtra(MESSAGE_EXTRA, message);
        App.getAppContext().sendBroadcast(intent);
    }

App.getAppContext()Application クラスで宣言された静的コンテキストです。

@Override
public void onResume() {
    super.onResume();
    updateStatus(MESSAGE);
}

onResume()保存されたメッセージを更新しています(フラグメントが常に表示されるとは限らないため.

私の受信機:

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String message = intent.getStringExtra(MESSAGE_EXTRA);
            updateStatus(message);
        }
    };

onStart / onStop:

@Override
public void onStart() {
    super.onStart();
    initReceiver();
    IntentFilter intentFilter = new IntentFilter(MESSAGE_INTENT_FILTER);
    LocalBroadcastManager.getInstance(App.getAppContext()).registerReceiver(receiver, intentFilter);
}

@Override
public void onStop() {
    super.onStop();
    LocalBroadcastManager.getInstance(App.getAppContext()).unregisterReceiver(receiver);
}

私のログ:

フラグメント開始時

レジューム フラグメントについて - メッセージ: メッセージ 1

更新ステータス - メッセージ: メッセージ 1

メッセージを送信: メッセージ 2

オンストップフラグメント

フラグメント開始時

レジューム フラグメントについて - メッセージ: メッセージ 2

更新ステータス - メッセージ: メッセージ 2

無効な管理者

メッセージを送信: キャンセル

それだけです...もう受信しません

4

0 に答える 0