0

我正在尝试在设备启动后将数据读取到我的小部件。

我的引导接收器是这样的:

    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意图(在小部件本身中使用它之后),但我无法读取我保存的数据。

我读到 usingSharedPreferences是解决方案,但我知道的是,当您启动设备时,SharedPreferences它不再存在。

我使用 Android SDK 中的内置 SQL 在内部保存数据。

请帮忙... :(

4

1 回答 1

0

BOOT_COMPLETED广播时,外部存储可能还没有准备好。你的循环毫无意义。

但我知道的是,当您启动设备时,SharedPreferences 不再存在。

是的,SharedPreferences在启动时有。

我使用 android sdk 中的内置 SQL 在内部保存数据。

然后不清楚为什么您要等待外部存储,因为您的数据不在外部存储上。

但是,任何形式的 I/O 都可能在启动时花费太长时间。BroadcastReceiver拨打startService()一个IntentService可以读取您的数据库或更新SharedPreferencesonHandleIntent()的应用小部件的电话。

于 2011-12-02T23:31:17.900 回答