Привет друзья, у меня есть проблема... Я хочу отправить данные формы формы данных для обслуживания, и я сохранил данные в общих предпочтениях. Все работает, я могу передавать данные в класс службы. Но проблема в том, что что, если я сменил строку на общие предпочтения и запустил мой проект из eclipse, то у меня не возникло никаких проблем, но я открываю приложение с устройства или эмулятора.. и затем меняю строку... это значение времени не обновляется в службе класса, в классе обслуживания - получение старых данных. Я, если отлаживаю его отображение значения, но на устройстве, показывающем старое значение. Любая помощь пожалуйста
This is the code i tried...
Activity class,From where i sent the value to to the service class using alarm manager
@Override
protected void onResume() {
super.onResume();
// Preference Satting
prefs = PreferenceManager
.getDefaultSharedPreferences(this);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
myIntent = new Intent(PZAlarmTTSActivity.this, TtsService.class);
passedText = prefs.getString("text", "<unset>");
//Log.i("passed Text :", passedText);
// Passing the value to the service
Bundle bundle = new Bundle();
bundle.putString("k_key", passedText);
myIntent.putExtras(bundle);
Log.i("key Data : ", passedText);
// Pending intent to launch when the alarm triggers
pendintIntent = PendingIntent.getService(PZAlarmTTSActivity.this, 0,
myIntent, 0);
// Sets alarm to trigger
alarmManager.set(AlarmManager.RTC_WAKEUP, calender.getTimeInMillis(), pendintIntent);
}
Service class, where i want to receive the string value
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Toast.makeText(this, "service started", Toast.LENGTH_LONG).show();
Bundle bundle = intent.getExtras();
String data = bundle.getString("k_key"); // Here data is not updating in 2nd case
Log.i("From service class : ", data);
}
см. Как говорит Док:
onStart: этот метод устарел.
Вместо этого реализуйте onStartCommand (Intent, int, int).
onStartCommand: вызывается системой каждый раз, когда клиент явно запускает службу, вызывая startService (Intent), предоставляя предоставленные им аргументы и уникальный токен целых чисел, представляющий запрос на запуск. Не вызывайте этот метод напрямую.
вам нужно использовать Threading, чтобы получить самое последнее значение в вашей службе или запустить свою службу, используя startService
каждый раз, чтобы получать новое значение из SharedPreferences без начала работы службы. Ваш метод onStart
не вызывается, если служба уже запущена
это может помочь вам !!!