我有一個設置活動,它帶有一個編輯文本首選項,它保存共享首選項中的一個字符串,它是一個IP地址,然後我有一個廣播接收器,一個AsyncTask調用一項服務。我想製作可自定義的url地址,但是當我撥打電話時並沒有採用當前的ip地址值,但是當我重新啓動我的應用程序時採取了正確的值。我怎麼能解決這個問題。我只粘貼有用的代碼。 在此先感謝廣播接收器不讀取共享首選項中的當前值
public class Broadcast extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
preferences = PreferenceManager.getDefaultSharedPreferences(context);
new Call().execute();
}
private class Call extends AsyncTask<String, String, String> {
String ip;
@Override
protected String doInBackground(String... params) {
ip = preferences.getString("key","");
String result = RestFullConnection.postCall("http://" + ip + ":8080/app/api/bla/sync", params[0]);
return result;
}
}
+++編輯+++ 我打電話在MainActivity廣播,我使用EditTextPreference保存在SP值:
Intent alarmIntent = new Intent(getApplicationContext(), Broadcast.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() + 5000, 30 * 1000, pendingIntent);
廣播何時何地被觸發?並將代碼發佈到您保存ip的地方。 –
我編輯我的問題。 – mike5v