2010-08-21 2 views
0

Я только что начал использовать службы на Android, и у меня есть простой сервис, который каждые 20 секунд проводит опрос сервера.Как получить данные из работающего сервиса

Теперь, как я могу получить эти данные из своего основного вида деятельности (когда он активен)?

В качестве альтернативы услуга может отправить ее обратно в мою основную деятельность (но только если она активна). Я не хочу разбудить свою деятельность.

Я прочитал SDK examples «Связывание», но я не могу найти пример, как фактически получить что-то из службы. Как начать и остановить привязку.

Из примера. Если у меня есть объект mBoundService в моей деятельности, как я могу получить свои данные из метода службы, например, например. "PollingData()"?

ответ

3

Мое предложение состояло в том, чтобы отправить широковещательную рассылку, используя sendBroadcast(), а затем используйте BroadcastReceiver как внутренний класс в вашем основном действии. В зависимости от вашего обслуживания вы можете просто привязать данные к цели с использованием putExtras() и getExtras()

Надеюсь, это поможет!

Практический пример:

public class x extends Service { 

//Code for your service goes here 

    public talk() { 
     Intent i = new Intent(); 
     i.putExtras("Extra data name", "Super secret data"); 
     i.setAction("FILTER"); 
     sendBroadcast(i); 
    } 
} 

Тогда в классе сервис разговаривает:

public class y extends Activity { 

    //Code for your activity goes here 

    BroadcastReceiver br = new BroadcastReceiver() { 
     public void onReceive(Intent i) { 
     String str = (String) i.getExtras().get("Extra data name").toString(); 
     } 

    OnResume() { 
     super.OnResume(); 
     IntentFilter filt = new IntentFilter("FILTER"); 
     this.registerReceiver(br, filt); 

     //Do your other stuff 
    } 

    OnPause() { 
     super.OnPause(); 
     unregisterReceiver(br); 
    } 

Надежда этот пример является о том, что вы ищете, дайте мне знать, если вам нужна более подробно.

+0

Спасибо Знаете ли вы, есть ли практические примеры этого? – droidgren

+0

Я просто добавил один для вас! Надеюсь, поможет. Широковещательные передачи часто используются андроидом, чтобы другие программы или другие части себя продолжали. Такие вещи, как входящее текстовое сообщение или исходящий вызов, вызывают трансляции. –

+0

Спасибо, я очень ценю вашу помощь. Ваш пример работал нормально, хотя это было: public void onReceive (Контекст c, Intent i), а затем «;» после .toString(); – droidgren

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