2014-01-13 2 views
0

Если WebService звонки в моем приложении, имеют вид:альтернатива глобальные переменные для Android

[domain]/USER_ID/[action] 

, что это лучший способ, чтобы отслеживать идентификатор пользователя? Делая что-то вроде этого:

public class MyApp extends Application { 
    private String userId; 
    public String getUserId() { return this.userId; } 
} 

кажется самым быстрым, но я не хотел, чтобы начать вниз по скользкому склону, который глобальные переменные. Я видел, как некоторые люди рекомендуют использовать SharedPreferences для подобных вещей, но я не знаю, является ли это хорошим решением, поскольку я считаю, что мне нужно будет часто обращаться к данным при обычном использовании приложения. Выполнение:

SharedPreferences sp = this.getSharedPreferences(...); 
String userId = sp.getString(...); 

каждый раз, когда мне нужна информация, похоже, что это вызовет довольно много накладных расходов. Существуют ли альтернативы для использования в этом типе сценария? Каков наилучший способ справиться с отслеживанием глобальных переменных в Android без использования глобальных переменных? (альтернативно, глобальные переменные, возможно, стоит использовать в Android?)

+1

Такого подход становится грязным, когда вы сохраняете * состояние * о приложении в глобальном Варсе. Когда вы не можете определить, как будет вести себя конкретный метод, не зная состояния чего-либо внешнего метода. Хранение части данных, к которой вам нужен доступ, часто имеет смысл, как сказал Патрик. Если вам нужно сохранить значение между экземплярами вашего приложения, сохраните его в общих настройках, когда он будет создан/изменен и извлечен в onCreate() приложения, а затем получите доступ к нему, как вы показали. Некоторые утверждают, что userId - это состояние, но это подделка. – Simon

ответ

2

Расширение класса Application, как описано выше, является наиболее распространенным методом хранения и использования глобальной переменной. Это идеальная подгонка для небольших объемов данных, которые вам нужно получить часто во всем приложении.

Смежные вопросы