3

如果我打电话

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);
}
4

2 回答 2

11

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

你没有。

进入createAd()活动。如果时间是一个问题,请使用 anAsyncTask而不是IntentService.

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

于 2012-07-30T19:10:35.633 回答
2

Activity在我看来,您似乎正在尝试与您的和进行双向通信Service。不要向您的服务发送一个,而是Intent考虑绑定到它。

编辑:回应 CommonsWare 的评论:

绑定到的问题在哪里IntentService?我已经发布了运行良好的应用程序,其中包含一个绑定的IntentService. 您没有提供任何证据来支持您的主张。

这里

服务既可以启动,也可以绑定连接。在这种情况下,只要服务已启动或有一个或多个带有Context.BIND_AUTO_CREATE标志的连接,系统就会保持服务运行。一旦这两种情况都不成立,onDestroy()就会调用服务的方法并有效地终止服务。从onDestroy().

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

此外,根据 OP 试图做什么,IntentService可能不再需要。

于 2012-07-30T19:10:23.200 回答