我在尝试通过在设备启动时启动的后台服务获取数据时遇到问题。从专用应用程序运行时,它可以很好地检索数据,但是当单独运行时,它会正确启动但不返回任何内容。它不依赖于任何其他类,它只使用自己的方法。
是否可以从以这种方式启动的后台服务执行http请求?
BackgroundService.java片段:
public class BackgroundService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
new BackgroundTask(this).run();
}
BackgroundTask类在其run()方法中完成所有工作,该方法包含http请求的代码,如果从应用程序运行该服务,则该代码可正常工作。我是否必须对onBind方法做些什么?
答案 0 :(得分:1)
您应该从startService()
广播接收器拨打BOOT_COMPLETED
。在您拨打stopSelfResult()
或stopSelf()
或有人致电stopService()
之前,您的服务将被视为有效。虽然服务处于活动状态,但它可以运行所需的任何Web请求(当然,这应该在单独的线程中完成)。
有关详细信息,请参阅Android文档中的"Creating a Started Service"部分。