WebService_modificar类已实现与数据库的连接,并通过.PHP文件更新了在EditText中捕获的日期,坐标等,并将其保存在我的远程bbdd中(我必须指出要执行来自Main的CLASS WebService_modificar是完美的)。但是现在我希望日期更新,坐标由CLASS Service在后台执行。 但是我不能从我的服务中执行同样的操作,也无法将ActivityMain.this用作上下文。我应该如何从Service的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方法中从Service运行我的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。当它运行并处于前台时,它可以完美地完成工作。让我们看看是否可以找到解决方案。
答案 0 :(得分:0)
您可以在服务内部使用getApplicationContext()
,而不是MainActivity.this
从更新中,我看到您需要WebService的BroadcastReceiver中的上下文。
为什么不使用在onReceive
中获得的上下文作为参数?
此上下文为the Context in which the receiver is running
如果您需要在服务内的onStartCommand
中使用上下文,则getApplicationContext()
应该可以使用。
通过这种方式,无法链接到您的代码。
答案 1 :(得分:0)
感谢您对错误进行的调试。原因是他用文本版本的值修改了基字段的值,当然,当从Main(第一平面)执行Service web_modify类时,数据发生了变化,他将其毫无问题地修改了bbdd中的内容。 作为后台的ActivityMain我无法获取字段的值,也无法获取日期和其他数据的方法。
以同样的方式感谢大家的评论,因为它们使我能够进行调查并进一步掌握代码。