Имам дейност с настройки с предпочитание за редактиране на текст, което записва в споделени предпочитания низ, който е 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 и запазвам стойността в SP с помощта на EditTextPreference:
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);