从Android服务运行类

问题描述 投票:0回答:2

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发送更新。当它运行并且在前台时,它完美地完成它。让我们看看我们是否能找到解决方案。

https://github.com/Chiscu/kakao

android web-services service android-asynctask
2个回答
0
投票

您可以在服务中使用getApplicationContext(),而不是MainActivity.this

EDIT:

从您的更新中我发现您需要在BroadcastReceiver中为您的WebService使用Context。 为什么不使用onReceive中的上下文作为参数?

这个背景是the Context in which the receiver is running

如果您需要在服务中的onStartCommand中使用上下文,getApplicationContext()应该可以工作。

顺便说一下,你的代码链接不起作用。


0
投票

感谢您通过错误实现的调试。原因是他用文本版本的值修改了基础字段的值,当然当从主(第一个平面)执行类服务web_modify时,数据发生了变化,并且他采取了它可以毫无问题地在bbdd中修改它们。作为后台的ActivityMain,我无法获取字段的值,也可以获取获取日期和其他数据的方法。

以同样的方式感谢大家的评论,因为他们让我能够调查并更多地了解代码。

© www.soinside.com 2019 - 2024. All rights reserved.