デバイスブート後にデータウィジェットにデータをロードする方法
-
27-10-2019 - |
質問
デバイスブーツの後にウィジェットにデータを読み取ろうとしています。
私のブートレシーバーはこれです:
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
もうそこにはありません。
Android SDKに組み込みのSQLを使用して、データを内部的に保存します。
助けてください... :(
解決
外部ストレージは、 BOOT_COMPLETED
ブロードキャスト。そして、あなたのループは無意味です。
しかし、私が知っていることは、デバイスを起動するとき、共有の登録はもはやそこにありません。
はい、 SharedPreferences
ブートタイムにあります。
Android SDKに組み込みのSQLを使用して、データを内部的に保存します。
データは外部ストレージにないため、なぜ外部ストレージを待っているのかは不明です。
ただし、I/Oのあらゆる形態が長すぎる場合があります。あなたの〜を持つ BroadcastReceiver
電話 startService()
で IntentService
それはあなたのデータベースを読むことができます SharedPreferences
の onHandleIntent()
アプリウィジェットを更新します。
所属していません StackOverflow