Запустите класс из сервиса Android - PullRequest
0 голосов
/ 28 марта 2019

Класс WebService_modificar реализовал соединения с базой данных и через файл .PHP обновляет дату, координаты и т. Д., Записанные в моем EditText, сохраняя его в моем удаленном bbdd (я должен указать, что для выполненияКЛАСС WebService_modificar из основного идеально).Но теперь я хочу, чтобы обновления даты, координаты выполнялись в фоновом режиме службой КЛАСС.Но я не могу сделать то же самое из моего сервиса, я не могу поставить ActivityMain.this в качестве контекста.Как мне запустить 'classJava' из моего метода onStartCommand моего Сервиса?

    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();

Теперь я хочу запустить свой класс WebService_Modify из моего Сервиса в методе onStartCommand, чтобы получить время в фоновом режиме, ноЯ получаю сообщение об ошибке.

    @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

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Благодаря отладке, которую вы достигли с ошибкой. Причиной этого было то, что он изменил значения полей базы со значениями текстового издания, и, конечно, когда класс Service web_modify был выполнен из Main (первая плоскость), данные изменились , и он взял его для изменения их в bbdd без проблем. Будучи в фоновом режиме ActivityMain, я не могу взять значения полей, но также методы, из которых получается дата и другие данные.

Точно так же спасибо всем за ваши комментарии, потому что они помогли мне быть в состоянии исследовать и быть в курсе всего кода.

0 голосов
/ 28 марта 2019

Вы можете использовать getApplicationContext() внутри службы вместо MainActivity.this

EDIT:

Из вашего обновления я вижу, что вам нужен контекст в BroadcastReceiver для вашего веб-сервиса.
Почему бы не использовать контекст, который вы получаете в onReceive в качестве параметра?

Этот контекст Контекст, в котором работает получатель

Если вам нужен Контекст в onStartCommand внутри Сервиса, getApplicationContext() должен работать.

Кстати, ссылка на ваш код не работает.

...