0

サービスに既にバインドされているアクティビティがあります。アクティビティを開始すると、サービスにバインドされ、サービス内の変数から値が取得されます。そのため、アクティビティで値を表示できます。

ここで、サービス内の変数の値を永続的に読み取りたいと考えています。私のアクティビティの onCreate が呼び出されている間に一度だけではありません。これどうやってするの?これの正しい方法は何ですか?

4

1 に答える 1

1

それを達成するためのいくつかの方法があります。比較的簡単な方法の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()この例では、値の更新を入れます。

于 2012-08-13T17:38:01.050 に答える