繁体   English   中英

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

[英]Android: How to get context of calling activity in an 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);
}

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

你没有。

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

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

在我看来,你似乎正试图与你的ActivityService进行双向沟通。 而不是将Intent发送到您的服务,而是考虑绑定到它。

编辑:回应CommonsWare的评论:

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

这里

服务既可以启动,也可以绑定连接。 在这种情况下,只要系统启动或者使用Context.BIND_AUTO_CREATE标志有一个或多个连接,系统就会保持服务运行。 一旦这些情况都不成立,就会调用服务的onDestroy()方法并有效终止服务。 onDestroy()返回时,应完成所有清理(停止线程,取消注册接收器onDestroy()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM