0

这是场景:我有一个广播接收器,它监听 ACTION_PHONE_STATE_CHANGED,当它改变时它启动一个服务。该服务对 CallLog 进行查询,当某些事情增加时,我想在 MainActivity 上的几个 ProgressBar 上显示它,但我该怎么做呢?

我正在考虑创建一个应用程序类,它是 MainActivity 和服务的子类,然后我可以有相应的引用,还是我错了?

提前致谢

4

1 回答 1

2

有一些可能:

  1. 您的服务可以发送广播(sendBroadcast),您的活动只需要根据您在服务上实现的注册一个广播接收器。像这样的东西:

您的服务:

 Intent intent=new Intent(getApplicationContext(),WebResults.class);
 intent.setAction("com.toxy.LOAD_URL");
 intent.putExtra("url",uri.toString());
 sendBroadcast(intent);

您的活动:

 private class Receiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context arg0, Intent arg1) {

     String url = arg1.getExtras().getString("url");
     WebView webview =(WebView)findViewById(R.id.webView);
     webview.loadUrl(url);
 }

这个链接可以帮助你:http ://www.vogella.com/articles/AndroidBroadcastReceiver/article.html

第二种方法是在您的服务上注册一个侦听器并在您的服务上通知该侦听器。

在您的服务中:

void onSomethingHappened()
{
     activityListener.notifyProgressBar();
}

void subscribe(YourInterface listener)
{
     actibityListener =  listener;
}

在您的活动中,启动您的服务后:

service.subscribe(this); 

但是,要采用更好的解决方案,您应该考虑您的服务实现(类型)。

这个关于AndroidService的链接很有用。

于 2013-02-24T23:08:32.550 回答