Android:未在“活动”中收到广播

时间:2016-06-20 04:31:30

标签: android android-fragments broadcastreceiver

我正在尝试从设置片段发送广播并在另一个活动中收听它。我使用ActivityA中的startActivityForResult启动了设置活动。 SettingsActivity有一个静态片段SettingsFragment:

public static class SettingsFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_general);
            Preference rateApp = findPreference("rate_this_app");

            Preference abcd = findPreference("abcd");
            rateApp.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {

                }
            });




        abcd.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                Intent intent = new Intent(getActivity(), ActivityA.class);
                intent.setAction("abcd");
                getActivity().sendBroadcast(intent);
            }
        });
    }
}

从abcd.setOnPreferenceClickListener发送的广播在ActivityA中注册,但由于某种原因没有收到它。是因为活动在后台,它不会接收广播吗?

1 个答案:

答案 0 :(得分:0)

如果您的活动处于暂停状态,则您无法接收广播。

Similar question

替代方案取决于您的目标。如果您的目标是更改应用中的某些设置,我会在用户进行更改后立即将其保存在SharedPreferences中。在ActiivityA onCreate方法中,我会从SharedPreferences中读取它。如果需要采取措施,BroadcastReceivers用于通知开发人员。例如,如果设置更改将更改用户屏幕上的视图,则BroadcastReceiver非常有用。您将收到通知并更新您的UI。如果用户看不到该页面,则您不需要该页面。