这就是场景:我有一个侦听ACTION_PHONE_STATE_CHANGED的BroadcastReceiver,当它发生变化时,它会启动一个服务。这个服务使CallLog成为一个查询,当有什么东西增加时我想在MainActivity上的几个ProgressBar上显示它,但是我怎么能这样做呢?
我正在考虑创建一个Application类,它是MainActivity和Service的子类,然后我可以有相应的引用,或者我错了吗?
提前致谢
答案 0 :(得分:2)
有一些可能性:
您的服务:
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的链接很有用。