0

私は初心者で、すでにサービスとブロードキャストレシーバー コンポーネントに関する記事を読んでいます。まだ、ここで何をすべきか、今は本当にわかりません。変数 k を常に変更するサービス (クラス: ExampleService) があります。

@Override protected void onHandleIntent(インテント インテント) {

while (k < 1000) {

    if(forward==true){
        k++;
    }else{
    k--;    
    }


    synchronized (this) {

        try {

            wait(100);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

k = 0;
this.stopSelf();

}

public long getInt(){
    return k;
}

と私の BroadcastReceiver:

BroadcastReceiver broadi=new BroadcastReceiver(){

@Override
public void onReceive(Context arg0, Intent arg1) {
    // TODO Auto-generated method stub
    ExampleIntentService se=new ExampleIntentService();

            text.setText("Count:"+String.valueOf(se.getInt()));
}

};

そこで、サービスのオブジェクトを作成し、「getInt()」メソッドでその値を取得しようとしました。常に 0 を返しますが、その理由はわかりません。任意のヒント?

4

1 に答える 1

0

電話すると

ExampleIntentService se=new ExampleIntentService();

そのクラスの新しいインスタンスを作成していますが、サービスの実行中のインスタンスを参照していません。あなたには2つのチャンスがあると思います:

  • makekとその getter メソッド static 。静的にしてkもインスタンス依存にはならず、呼び出してその値を読み取ることができます

    ExampleIntentService.getInt();

  • 変更するたびに、ブロードキャストレシーバーで受信できるブロードキャストをk 送信しますが、1秒間に10ブロードキャストを100秒間送信できるようになるまでには、大変な作業になると思います

于 2013-07-17T16:40:07.977 に答える