Данные не могут быть переданы в службу после перезапуска устройства в Android.

1

Привет друзья, у меня есть проблема... Я хочу отправить данные формы формы данных для обслуживания, и я сохранил данные в общих предпочтениях. Все работает, я могу передавать данные в класс службы. Но проблема в том, что что, если я сменил строку на общие предпочтения и запустил мой проект из 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);
    }
Теги:
android-emulator
service

1 ответ

0
Лучший ответ

см. Как говорит Док:

onStart: этот метод устарел.

Вместо этого реализуйте onStartCommand (Intent, int, int).

onStartCommand: вызывается системой каждый раз, когда клиент явно запускает службу, вызывая startService (Intent), предоставляя предоставленные им аргументы и уникальный токен целых чисел, представляющий запрос на запуск. Не вызывайте этот метод напрямую.

вам нужно использовать Threading, чтобы получить самое последнее значение в вашей службе или запустить свою службу, используя startService каждый раз, чтобы получать новое значение из SharedPreferences без начала работы службы. Ваш метод onStart не вызывается, если служба уже запущена

это может помочь вам !!!

  • 0
    Привет, Имран, спасибо за вашу помощь, все, что вы сказали, является правильным, но мое приложение все еще не работает, оно принимает старое значение, если я устанавливаю новое значение, оно не принимает. По желанию вы отправите мне любой простой код для достижения того же.
  • 0
    простой способ, друг, как я уже говорил, если ваша служба уже запущена, вы не получите последнее значение из SharedPreferences, поэтому вам нужно создать свою собственную логику, чтобы отслеживать изменения SharedPreferences в вашей службе и пытаться каждый раз вызывать ее, чтобы запустить службу с помощью startService в onCreate и onResume в вашей деятельности. В настоящее время я не могу предоставить вам простой код. Поэтому попробуйте сами. Я просто укажу, почему вы не получаете последнее значение от SharedPreferences. Спасибо, друг, я надеюсь, вы поймете что я хочу объяснить
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню