[英]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继续执行其他操作,文件下载仍应继续)。
在我看来,你似乎正试图与你的Activity
和Service
进行双向沟通。 而不是将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.