Как загрузить данные в виджет приложения после загрузки устройства

StackOverflow https://stackoverflow.com/questions/8363418

Вопрос

Я пытаюсь прочитать данные своему виджету после загрузки устройства.

Мой загрузочный приемник такова:

    public class onBootReceiver extends BroadcastReceiver{

public static final String TAG = "BootReceiver";
private Context c;
@Override
public void onReceive(Context c, Intent i) {
    // TODO Auto-generated method stub

    boolean dontStop = true;
    while(dontStop)
    {
        try
        {   
            this.c=c;
            if(isExternalStorageMounted())
            {
                dontStop = false;
            }
            else
                for(int j=0;j<10000;j++)
                    Log.d(TAG, "###################### EXTERNAL STORAGE NOT MOUNTED ##########################");
        }
        catch (Exception e)
        {
            for(int j=0;j<10000;j++)
                Log.d(TAG, "###################### EXTERNAL STORAGE NOT MOUNTED ##########################");
        }
    }
    Intent externalStorageReady = new Intent(c, TheWidget.class);
    externalStorageReady.setAction(GlobalVars.WIDGET_INTENT_ACTION_READ_PREFS_AFTER_BOOT);
    c.sendBroadcast(externalStorageReady);

}
private boolean isExternalStorageMounted()
{
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_REMOVED.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_SHARED.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_UNMOUNTABLE.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_UNMOUNTED.equals(state))
    {
        return false; 
    }
    return true;
}

}

Я знаю, что получаю BOOT_COMPLETED намерение (после использования его в самом виджете), но я просто не могу прочитать свои сохраненные данные.

Я читаю, используя SharedPreferences это решение, но я знаю, когда вы загружаете свое устройство, SharedPreferences больше нет.

Я сохраняю данные внутренне, используя встроенный SQL в Android SDK.

Пожалуйста помоги... :(

Это было полезно?

Решение

Внешнее хранилище может быть не готово к моменту BOOT_COMPLETED транслировать. И ваши петли бессмысленны.

Но я знаю, что когда вы загружаете свое устройство, SharedPreferences больше нет.

Да, SharedPreferences Есть ли время загрузки.

Я сохраняю данные внутренне, используя встроенный SQL в Android SDK.

Тогда неясно, почему вы ждете на внешнем хранилище, поскольку ваши данные не находятся на внешнем хранилище.

Любая форма ввода/вывода может занять слишком много времени, хотя, прямо во время загрузки. Иметь свой BroadcastReceiver вызов startService() на IntentService это может прочитать вашу базу данных или SharedPreferences в onHandleIntent() и обновить виджет приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top