0

我是一个初学者,并且已经阅读了有关服务和广播接收器组件的帖子。我现在还不是真的,在这里做什么。我有一个总是更改变量 k 的服务(类:ExampleService):

@Override protected void onHandleIntent(Intent intent) {

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 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 方法是静态的。使其成为静态k不会成为依赖于实例的,您可以通过调用来读取它的值

    ExampleIntentService.getInt();

  • 发送一个广播,可以由您的广播接收器接收,每次您更改时,k 但我认为您可以在 100 秒内每秒发送 10 个广播的那一刻做很多工作

于 2013-07-17T16:40:07.977 回答