Когда транслируется намерение ACTION_DEVICE_STORAGE_LOW?

В моем приложении я зарегистрировал широковещательный приемник для получения системного намерения ACTION_DEVICE_STORAGE_LOW. Я ожидал, что это будет транслироваться всякий раз, когда в телефоне мало внутренней памяти. Итак, я загрузил несколько дополнительных приложений (у моего телефона очень маленькая внутренняя память), из-за чего ОС отображала уведомление о нехватке системной памяти. В телефоне осталось 10-15 Мб. Однако мой радиоприемник так и не получил этого намерения. Тем не менее, системное уведомление остается на панели уведомлений, и я не могу работать в Интернете из-за нехватки внутренней памяти.

Следует ли транслировать это намерение всякий раз, когда отображается уведомление о нехватке внутренней памяти? Или есть еще более низкий порог памяти, который отправит эту трансляцию, которую я еще не достиг на своем телефоне? В документации сказано только «Действие трансляции: липкая трансляция, указывающая на нехватку памяти на устройстве». Поскольку он на самом деле не определяет «состояние нехватки памяти», я не знаю, делаю ли я что-то не так, или я просто еще не достиг этого условия.

Вот код моего BroadCastReceiver:

public class MemoryBroadcastReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
            Log.isExternalStorageProblem = false;
            Log.clearNotification(Log.externalMemoryNotificationID);
        }

        if (action.equals(Intent.ACTION_DEVICE_STORAGE_OK)) {
            Log.isInternalStorageLow = false;
            Log.clearNotification(Log.internalMemoryNotificationID);
        }

        if (action.equals(Intent.ACTION_DEVICE_STORAGE_LOW)) {
            Log.isInternalStorageLow = true;
            Log.displayMemoryNotification("Internal Storage Low",
                    "The internal storage is low, Please fix this.",
                    "Please clear cache and/or uninstall apps.", Log.internalMemoryNotificationID);
        }
    }
}

У меня есть служба, которая инициализирует приемник, добавляет фильтр намерений и регистрирует его (среди прочего):

private MemoryBroadcastReceiver memoryBroadcastReciever = new MemoryBroadcastReceiver();

public void registerBroadcastReceiver() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_DEVICE_STORAGE_OK);
    filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
    filter.addAction(Intent.ACTION_DEVICE_STORAGE_LOW);
    filter.addDataScheme("file");

    this.getApplicationContext().registerReceiver(memoryBroadcastReciever, filter);
}

    @Override
    public void onCreate() {
        registerBroadcastReceiver();
}
10
задан motis10 18 July 2017 в 12:56
поделиться