Передача переменных из службы в onDestroy () в уже открытую Main-Activity - PullRequest
1 голос
/ 24 февраля 2012

У меня есть Main-Activity, которая отображает несколько блесен.С помощью кнопки-переключателя в Main-Activity я запускаю сервис, который собирает данные GPS в фоновом режиме, который измеряет расстояние и устанавливает некоторые другие переменные.Когда я останавливаю службу другим нажатием на кнопку Toggle в Main-Activity, я останавливаю службу, поэтому в службе выполняется команда onDestroy ().В onDestroy в Сервисе я хочу отправить переменные из сервиса в уже открытый Main-Activity.Я пробовал это до сих пор безуспешно в службе:

    Intent intent = new Intent(this, Main.class);
    Bundle b = new Bundle();
    Test = 2222;
    b.putInt("Test", Test);
    intent.putExtras(b);

Я не использую «startActivity (намерение);», потому что действие, при котором данные отправляются, уже открыто ...-Activity.

А на стороне Main-Activity:

    Bundle b = getIntent().getExtras();
    if (b != null){ 
       Test = b.getInt("Test");
    }
    else{
       //..oops!
       Toast.makeText(Main.this, "Oops...Nothing from service! :(", Toast.LENGTH_SHORT).show();
    }

Я никогда не получаю данные от службы.Я пытаюсь, потому что мне нужно запустить сервис из Main-Activity, из Main Activity пользователь останавливает сервис и получает от него значения, затем Main-Activity должен передавать значения из сервиса И с выбранного счетчикаЦенится от себя до другого вида деятельности.

Я пытаюсь сделать это уже несколько дней, и я также нахожу здесь некоторые подсказки, но пока у меня ничего не получалось.У кого-нибудь есть идеи?Должен ли я использовать Broadcast-Receiver?Какой правильный способ сделать это?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Перед уничтожением службы сохраните данные в общем предпочтении и получите доступ к ним в основном задании

0 голосов
/ 24 февраля 2012

Для получения данных необходим основной приемник вещания.

0 голосов
/ 24 февраля 2012

Я не знаю, является ли это лучшим способом, но просто создайте созданную вами Службу для обновления статического pojo. Если действие уже открыто, вы можете просто установить таймер для опроса статического pojo из Activity, чтобы увидеть, изменилось ли что-то через AsyncTask. Когда что-то было обновлено в pojo, AsyncTask может сказать Activity, чтобы он обновлял пользовательский интерфейс соответственно. Тогда вам не нужно играть с глупыми связками. Также, если вы беспокоитесь о потере ваших данных, вы всегда можете использовать SQLite. Надеюсь это поможет.

...