WebService_modificar类已实现与数据库的连接,并通过.PHP文件更新在我的EditText中捕获的日期,坐标等,将其保存在我的远程bbdd中(我必须指出要从中执行CLASS 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发送更新。当它运行并且在前台时,它完美地完成它。让我们看看我们是否能找到解决方案。
您可以在服务中使用getApplicationContext()
,而不是MainActivity.this
从您的更新中我发现您需要在BroadcastReceiver中为您的WebService使用Context。
为什么不使用onReceive
中的上下文作为参数?
这个背景是the Context in which the receiver is running
如果您需要在服务中的onStartCommand
中使用上下文,getApplicationContext()
应该可以工作。
顺便说一下,你的代码链接不起作用。
感谢您通过错误实现的调试。原因是他用文本版本的值修改了基础字段的值,当然当从主(第一个平面)执行类服务web_modify时,数据发生了变化,并且他采取了它可以毫无问题地在bbdd中修改它们。作为后台的ActivityMain,我无法获取字段的值,也可以获取获取日期和其他数据的方法。
以同样的方式感谢大家的评论,因为他们让我能够调查并更多地了解代码。