2016-02-11 5 views
0

Здравствуйте, я передаю сообщение обработчика из тестовой службы для проверки активности. Есть ли способ вернуть объект из TestActivity в класс Testservice. Или есть более простой способ сделать это.Отправка значения обратно из обработчика в android

public class TestService { 
    public Handler testResultsHandler; 

    private BooleanstoreTestResults(String message) { 
     if (testResultsHandler != null) 

     { 
      Message message = testResultsHandler.obtainMessage(); 
      message.obj = "refresh"; 
      testResultsHandler.sendMessage(message); 
     } 
    } 
} 


public class TestActivity extends Activity { 
    private TestService testService = new TestService(this); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     formView = (View) findViewById(R.id.form); 
     messageTextView = (TextView) findViewById(R.id.status_message); 
     testService.testResultsHandler = new TestResultResponse(); 

    } 

    private class TestResultResponse extends Handler { 
     @Override 
     public void handleMessage(Message msg) { 
      super.handleMessage(msg); 
      if (msg != null && msg.obj != null && this != null) { 
       if (msg.obj.toString().equals("refresh")) { 
        refresh(); // return value back to testservice in here 
       } 
      } 
     } 
    } 
} 

ответ

0

Для обслуживания сервисного обработчика в Activity необходимо использовать ServiceConnection.

private ServiceConnection mServiceConnection = new ServiceConnection() { 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     // onServiceDisconnected is only called in extreme situations (crashed/killed). 
     mBound = false; 
    } 

    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     mConnectorSender = new Messenger(service);     
     mBound = true; 
    } 
}; 

и привязывать службы, как это:

mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); 

Here is хороший учебник от Vogella.

Также лучше отправлять небольшие сообщения в параметрах msg.arg1 и msg.arg2. Вы можете создать константу для действия обновления и назначить ее msg.arg1. Было бы лучше, чем отправить объект.

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

  • Нет связанных вопросов^_^