0

AlarmManager を使用して定期的にサービスを開始し、サーバーからデータを取得しています。

    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, Service.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 1, intent, 0);
    alarmManager.setRepeating(
            AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime(),
            AlarmManager.INTERVAL_FIFTEEN_MINUTES,
            pendingIntent);

だから、それは起動し、すべてがうまくいく...

唯一の問題は、そこからメイン UI を更新する方法がわからないことです...私が見たすべての例は AlarmManager を使用していません...そのため、私のニーズには合いません。

手伝っていただけませんか?

ありがとう!

4

1 に答える 1

0

サービスは UI スレッドにアクセスできません。ただし、コード内で参照しているコンテキスト オブジェクトを使用して呼び出すことは可能です。

runOnUiThread(Runnable Action);

Runnable やその他のマルチスレッド機能に精通している場合は、これでどこに行くのかがわかります。

さもないと、

サービスに Intent ブロードキャストを起動させ、BroadcastReceiver を拡張するネストされたクラスを作成します。

private class updateUIReceiver extends BroadcastReceiver{

現在 UI スレッドを保持しているアクティビティ内。次に、を使用して創造的になる

Intent.putExtra();

UI を更新する方法をアクティビティに伝えます。文字列などはintです。定数はうまく機能します。

于 2012-07-11T15:09:50.453 に答える