0

呼び出されたメイン アクティビティで変数を"sum"作成し、サービスのスレッドで次のように変数を 1 ずつ増やすループを作成しました。

public void run() {
    for(int i=0;i<50000000;i++) {
        num++;
    }

ここで、変数が 1 増加するたびに、 の値が の値に更新されるようにしたいと考えてい"num"ます。"sum""num"

しかし、私はそれを行う方法を本当に知りません。

スレッドが終了した後やサービスが破棄された後ではなく、ライブ更新になることを望みます。

4

2 に答える 2

1

アクティビティをサービスにバインドし、そのインターフェイスを定義する必要があります。しかし、それはサービスである必要がありますか?たぶん AsyncTask の方が簡単な解決策になるでしょうか?

于 2012-10-21T00:31:50.753 に答える
0

これは、サービス スレッドでインテントをブロードキャストし、メイン スレッドでそのタイプのインテントのレシーバを登録することで実現します。そのためには、次の 3 つのコンポーネントが必要です。

  • サービスからメインスレッドに追加のデータを送信する必要がある場合は、エクストラを追加したインテント
  • ブロードキャスト レシーバー。 を拡張し、インテントがブロードキャストされたときにそのメソッドBroadcastReceiverを実行するクラスOnReceive
  • インテント フィルター。基本的には、インテントをレシーバーにリンクするものです。フィルター タイプを使用してレシーバーを登録します。

コードを再入力することもできますが、このリンクにはその使用方法に関する説明があります。最後の 3 つのスライドに興味があります。

http://www.slideshare.net/CodeAndroid/android-intent-intent-filter-broadcast-receivers

また、これをチェックしてください: http://developer.android.com/reference/android/content/BroadcastReceiver.html http://developer.android.com/reference/android/content/IntentFilter.html

于 2012-10-21T00:34:33.810 に答える