2015-06-03 4 views
4

Я пытаюсь найти способ отправить целочисленное значение из моей службы в мою главную учетную запись, но я не могу понять это с помощью учебных пособий в Интернете. Я использую Handler для получения сообщений, которые я отправляю из Thread в моей службе.Отправка простого сообщения из службы в действие

Мой код Ветка на службе:

private class ServiceThread extends Thread { 
    @Override 
    public void run() { 
     super.run(); 
     try{ 
      Log.i("Service", "TASK PERFORMED"); 

      int x = 0; 
      for (int i = 0; i < 20; i++){ 
       x += (random.nextInt(20) + 20); 
      } 
      theInteger = x/20; 
      Message msg = Message.obtain(); 
      msg.what = MY_RND_INT; 
      msg.arg1 = theInteger; 
      handler.sendMessage(msg); 
     }catch(Exception e){ 
      e.getMessage(); 
     } 
    } 
} 

Мой код пытается получить сообщение:

public Messenger mMessenger = new Messenger(new IncomingHandler()); 


class IncomingHandler extends Handler { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case SimpleService.MY_RND_INT: 
       rndInt.setText(msg.arg1); 
       break; 
      default: 
       super.handleMessage(msg); 
     } 
    } 
} 
+1

Я только что отправил вам некоторый код, пожалуйста, посмотрите на него. – AnixPasBesoin

+0

@AnixPasBesoin Извините, это было поздно, только что вернули обратно! Спасибо за ваш ответ <3 – user2912900

ответ

9

Предполагая, что ваша активность и обслуживание в том же пакете.

сторона служба

// Supposing that your value is an integer declared somewhere as: int myInteger; 
private void sendMessage() { 
    // The string "my-integer" will be used to filer the intent 
    Intent intent = new Intent("my-integer"); 
    // Adding some data 
    intent.putExtra("message", myInteger); 
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
} 

сторона активность

@Override 
public void onResume() { 
    super.onResume(); 
    // This registers mMessageReceiver to receive messages. 
    LocalBroadcastManager.getInstance(this) 
         .registerReceiver(mMessageReceiver, 
             new IntentFilter("my-integer")); 
} 

// Handling the received Intents for the "my-integer" event 
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    // Extract data included in the Intent 
    int yourInteger = intent.getIntExtra("message",-1/*default value*/); 
    } 
}; 

@Override 
protected void onPause() { 
    // Unregister since the activity is not visible 
    LocalBroadcastManager.getInstance(this) 
         .unregisterReceiver(mMessageReceiver); 
    super.onPause(); 
} 
Смежные вопросы