サービスに既にバインドされているアクティビティがあります。アクティビティを開始すると、サービスにバインドされ、サービス内の変数から値が取得されます。そのため、アクティビティで値を表示できます。
ここで、サービス内の変数の値を永続的に読み取りたいと考えています。私のアクティビティの onCreate が呼び出されている間に一度だけではありません。これどうやってするの?これの正しい方法は何ですか?
それを達成するためのいくつかの方法があります。比較的簡単な方法の1つは、Handler
定期的にトリガーするを使用することです。
public class MyActivity extends Activity {
private static final int UPDATE_RATE_IN_MS = 500;
private static final int MSG_UPDATE = 0;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
doUpdate();
mHandler.sendEmptyMessageDelayed(MSG_UPDATE, UPDATE_RATE_IN_MS);
}
};
}
@Override
protected void onStart() {
super.onStart();
mHandler.sendEmptyMessageDelayed(MSG_UPDATE, UPDATE_RATE_IN_MS);
}
@Override
protected void onStop() {
super.onStop();
mHandler.removeMessages(MSG_UPDATE);
}
private void doUpdate() {
// do whatever you need here.
}
}
doUpdate()
この例では、値の更新を入れます。