Я новичок в Android и пробовал почти каждый метод использовать Shared Preferences, но когда я пытаюсь получить значение в классе неактивности, метод не работает ТОЛЬКО ЕСЛИ ПРИЛОЖЕНИЕ УДАЛЕНО ИЗ ПОСЛЕДНИХ ПРИЛОЖЕНИЙ.
Мой сценарий похож на
Класс LocationRequestHelper.java
import android.content.Context;
import android.preference.PreferenceManager;
public class LocationRequestHelper {
...
...
public static String getUserId() {
return MainActivity.preferences.getString("userId","");
}
public static void setUserId(String userId) {
MainActivity.preferences.edit().putString("userId", userId ).commit();
}
}
MainActivity
public class MainActivity extends FragmentActivity implements
SharedPreferences.OnSharedPreferenceChangeListener {
public static SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
LocationRequestHelper.setUserId("1");
....
....
Utils
public class Utils {
public static void getLocationUpdates(final Context context, final Intent intent, String broadcastevent){
LocationResult result = LocationResult.extractResult(intent);
if (result != null) {
List<Location> locations = result.getLocations();
Location firstLocation = locations.get(0);
accuracy = firstLocation.getAccuracy();
LocationData data = new LocationData();
// MY FUNCTION DOESN'T WORK HERE
data.setUsrid(LocationRequestHelper.getUserId());
updateServer(data);
}
}
getLocationUpdates вызывается из BroadcastReceiver
Теперь возникают проблемы после того, как я пытаюсь получить ID пользователя, используя
LocationRequestHelper.getUserId();
ИЗМЕНЕНО: добавлен код трансляции
LocationUpdatesBroadcastReceiver
public class LocationUpdatesBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "LUBroadcastReceiver";
public static final String ACTION_PROCESS_UPDATES ="PROCESS_UPDATES";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
final String action = intent.getAction();
if (ACTION_PROCESS_UPDATES.equals(action)) {
Utils.getLocationUpdates(context,intent,"PROCESS_UPDATES");
}
}
}
}
ПРИМЕЧАНИЕ :: ЭТО РАБОТАЕТ ХОРОШО, ЕСЛИ ПРИЛОЖЕНИЕ НА ФОНЕ. НО ломается после того, как я убил из последних приложений.
Скажите, пожалуйста, как я могу отправить сохраненный идентификатор пользователя в моем вызове API?
извините за заглавные буквы, но это главная проблема: P