Ошибка has no zero argument constructor Intent Service

209
20 ноября 2017, 17:46

Никак не могу понять в чем ошибка. Использую конструктор без аргумента,но при этом все равно ловлю этот эксепшен.

public class BackGroundService extends IntentService {

    public BackGroundService() {
        super("BackGroundService");
    }
    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        // Use reflection to trigger a method from 'StatusBarManager'
        @SuppressLint("WrongConstant") Object statusBarService = getSystemService("statusbar");
        Class<?> statusBarManager = null;
        try {
            statusBarManager = Class.forName("android.app.StatusBarManager");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Method collapseStatusBar = null;
        try {
            // Prior to API 17, the method to call is 'collapse()'
            // API 17 onwards, the method to call is `collapsePanels()`
            if (Build.VERSION.SDK_INT > 16) {
                collapseStatusBar = statusBarManager.getMethod("collapsePanels");
            } else {
                collapseStatusBar = statusBarManager.getMethod("collapse");
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        collapseStatusBar.setAccessible(true);
        try {
            collapseStatusBar.invoke(statusBarService);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

Вызов осуществляется от сюда

public void collapseNowFirst() {
     // Initialize 'intent service'
     if (intentService == null) {
        intentService = new Intent(MainActivity.this, BackGroundService.class);
     }
     // If window focus has been lost && activity is not in a paused state
     // Its a valid check because showing of notification panel
     // steals the focus from current activity's window, but does not
     // 'pause' the activity
     if (!currentFocus && !isPaused) {
        startService(intentService);
     } else 
        stopService(intentService);
}
Answer 1

Код выглядит правильным, очень похоже что по каким-то причинам компилятор "не видит" новой версии файла.

Ради эксперимента попробуйте создать новый класс BackGroundService1, скопировав туда весь код и использовать его вместо BackGroundService. Если дело именно в обновлении, то ошибка должна пропасть.

READ ALSO
Недостаточно места в ArrayList

Недостаточно места в ArrayList

Если при вставке новых элементов в ArrayList, недостаточно места, то новая ёмкость рассчитывается по формуле: (oldCapacity*3)/2+1 С какой целью разработчики...

213
Создание для функции выборки данных из Базы Данных(Java)

Создание для функции выборки данных из Базы Данных(Java)

Здравствуйте, пишу программу, которая работает с БД, но возникла проблема с написание хорошей функции для выборке данных из БД, чтобы она...

169
Шифрование методом AES

Шифрование методом AES

Здравствуйте, есть такой вот код, по идее он должен зашифровать слово "hello" и здесь же дешифровать, вывести в text view, но при запуске приложение...

170
Виженер Java Ошибка

Виженер Java Ошибка

Пытаюсь сделать шифр Виженера, но в коде:

168