WebService_modificar类已经实现了与数据库的连接,并通过 .PHP文件,更新日期,坐标等...在我的 EditText 中捕获,将其保存在我的远程 bbdd 中(我必须指出,要从主目录执行类 WebService_modificar 它是完美的)。但是现在我希望日期更新,坐标由CLASS服务在后台进行。 但是我不能从我的服务中做同样的事情,我不能把ActivityMain.this作为上下文。我应该如何从我的服务的onStartCommand方法运行'classJava'?
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Location location = intent.getParcelableExtra(LocationUpdatesService.EXTRA_LOCATION);
et_fechahora.setText(devuelveFechaHora());
//Aquí hay que meter el webService actualizar
new WebService_modificar(MainActivity.this).execute();
现在我想在 onStartCommand 方法中从我的服务运行我的 WebService_Modify 类,以便我在后台获取时间,但我收到错误。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "Service started");
boolean startedFromNotification = intent.getBooleanExtra(EXTRA_STARTED_FROM_NOTIFICATION,
false);
// We got here because the user decided to remove location updates from the notification.
if (startedFromNotification) {
removeLocationUpdates();
stopSelf();
}
// Le dice al sistema que SI intente volver a crear el servicio después de que se haya eliminado.
return START_STICKY;
}
在这里,我将项目的链接留在GitHub上,以查看其更完整的可视化效果,从而能够解决错误。简而言之,我需要在后台向 bbdd 发送更新。当它运行时位于前台时,它会完美地完成它。让我们看看我们是否能找到解决方案。
https://github.com/Chiscu/kakao
您可以在服务中使用getApplicationContext()
,而不是MainActivity.this
编辑:
从您的更新中,我看到您需要 Web 服务的广播接收器中的上下文。
为什么不使用您在onReceive
中获得的上下文作为参数?
此上下文是接收器运行的上下文
如果您需要服务内部onStartCommand
上下文,getApplicationContext()
应该可以工作。
顺便说一下,指向您的代码的链接不起作用。
感谢您通过错误实现的调试。原因是他用文本版本的值修改了基础字段的值,当然,当从 Main(第一个平面)执行类服务web_modify时,数据发生了变化,他把它用于在 bbdd 中修改它们没有问题。作为后台的 ActivityMain,我无法获取字段的值,也无法获取获取日期和其他数据的方法。
同样,感谢大家的评论,因为它们为我提供了调查并更多地掌握代码的服务。