1

つまり、私がやろうとしているのは、アクティビティのビューを1秒に1回などの間隔で更新することです。この特定のケースでは、いくつかのボタンがあり、変更したいのはそれらのテキストだけです。私はここで同じ問題に対処するためにかなりの数の質問を読みましたが、私は他の人よりも少し立ち往生しているようです、そして私はそれをAndroidでの制限された経験のせいにするつもりです(つまり、私は理解していませんでした提案されたソリューション、またはサンプルコードのコアアイデアを特定できなかったソリューション、およびAndroid用にプログラミングしようとしているのはこれが実際には初めてです)。

サービスにデータ(およびその作成)を所有させたいので、アクティビティへのコールバックを考えました。それが、過去数時間頭を悩ませようとしてきたことです。私が持っているのは、とのサービスでonCreate()ありonStartCommand()onDestroy()基本的にはそれで問題ありません。私はそれをAndroidマニフェストファイルに登録し、それを実現することに成功しました(私はライフサイクルメソッドをログに記録しています)。

しかし、どうすれば

  • サービスからのデータでビューを頻繁に更新する

  • 依存する特定の情報をサービスに提供します(ボタンイベントの通知など)

ご協力いただきありがとうございます!

4

3 に答える 3

1

公式のAndroidドキュメントからサービスへのバインドについてお読みください。

それはあなたのすべての質問に答えるはずです。

基本的には、サービスに「バインド」し、それを実行するとサービスオブジェクトが得られるという考え方です。そこから、サービスのメソッドを直接呼び出すことができます。あなたの場合、notifyButton1Pressed()などと呼ばれるサービスで宣言されたメソッドが必要になるでしょう。

アクティビティのビューを一定の間隔で更新するには、TimerTaskとTimerを使用します。あなたがグーグルを通してそれらを研究するならば、それらはかなり自明です。

于 2012-08-14T22:56:49.930 に答える
0

からを更新するには、activityからを更新するservice必要がregisterありBroadcastReceiverますactivityreceiverあなたはあなたの更新を行い、そしてサービスではあなたはsendBroadcastあなたの活動をしなければなりません。そして、activityとの間の情報は、によって送信されるserviceを介して送信できます。IntentsendBroadcast

于 2012-08-15T01:47:11.910 に答える
0

実際には、とを使用して、アクティビティ自体の内部からアクティビティを更新する非常に簡単な方法がありTimerますandroid.os.HandlerIUpdateableアイデアは、更新メソッドを公開するインターフェース(例)をアクティビティに与えることです。次に、を拡張して引数としてTimerTask取り、それへの参照を保持します。(Handler, IUpdateable)のメソッドで、たとえばを呼び出しTimerTaskます。アクティビティで、とスケジュールをインスタンス化します。 このようにして、実際に再利用可能なアプローチが得られます(インターフェースを使用すると、これをあらゆるアクティビティに簡単に実装できます)。これが不明な場合は、この要点をご覧ください。run()updateableActivity.update()Timernew UpdateTask(new Handler(), this);

于 2013-09-07T22:07:55.663 に答える