Android:如何在IntentService中获取调用活动的上下文?

时间:2012-07-30 18:58:35

标签: android intentservice

如果我打电话

Intent intent = new Intent(ReadingActivity.this, AdService.class);
startService(intent);       

来自onCreate类的MyActivity方法,如何从MyActivity.this类的onHandleIntent()方法内访问IntentService

@Override
protected void onHandleIntent(Intent arg0) {
    // TODO Auto-generated method stub
    ((BookLib) getApplication()).createAd(I need to pass the calling activities context here);
}

2 个答案:

答案 0 :(得分:11)

  

如何从IntentService类的onHandleIntent方法内部访问MyActivity.this

你没有。

createAd()移至活动中。如果时间有问题,请使用AsyncTask而不是IntentService

IntentService主要用于您希望工作与任何活动分离的情况(例如,即使用户离开您的用户界面,文件下载仍应继续)做其他事情。)

答案 1 :(得分:2)

在我看来,您似乎正在尝试与ActivityService进行双向通信。而不是向您的服务发送Intent,而是考虑使用binding

编辑:回应CommonsWare的评论:

绑定到IntentService的问题在哪里?我发布了包含绑定IntentService的工作正常的应用。您没有提供任何证据来支持您的申请。

来自here

  

服务既可以启动,也可以绑定连接。在   在这种情况下,系统只要保持服务运行   要么启动,要么有一个或多个连接   Context.BIND_AUTO_CREATE标志。曾经两种情况都没有   保持,服务的onDestroy()方法被调用,服务是   有效终止。所有清理(停止线程,取消注册   接收方)应在从onDestroy()返回后完成。

文档清楚地表明系统支持同时绑定和启动。在常规IntentService上使用Service不会改变这一点。即使您在处理Intent后明确停止服务,只要某些东西仍然绑定到它,Android就会保持运行。

此外,根据OP的目的,可能不再需要IntentService