Не можна (строго кажучи) передавати кілька примітивів до AsyncTask. Наприклад, якщо ви хочете виконати myTask.execute(long1, long2)
та спробувати налаштувати private class myTask extends AsyncTask<long, Void, Void>
відповідний метод:
@Override
protected LocationItemizedOverlay doInBackground(long... params) {...}
ваша IDE, швидше за все, скаржиться на необхідність замінити метод супертипу. Зверніть увагу, що ви використовуєте так званий підпис методу Varargs для doInBackground
, де (long... params)
все одно, що сказати: "Я приймаю змінну кількість лонгів, що зберігається як масив, який називається params. Я не зовсім розумію, що викликає скаргу компілятора / IDE , але я думаю, що це пов’язано з тим, як визначається загальний клас Params
.
У будь-якому випадку, можна без проблем досягти бажаного, за умови, що ви правильно перекинули свої примітиви у відповідні їм непримітивні обгортки (наприклад, int => Integer, long => Long тощо). Насправді, вам не потрібно явно передавати свої примітиви не-примітивним. Здається, Java це впорається з вами. Вам просто потрібно налаштувати ASyncTask наступним чином (на прикладі longs):
private class MyTask extends AsyncTask<Long, Void, Void> {
@Override
protected void doInBackground(Long... params) {
long myFirstParam = params[0]
}
...
}
Потім ви можете використовувати цей клас так, як спочатку задумали, наприклад:
MyTask myTask = new MyTask();
myTask.execute(long1, long2);
Або для будь-якої кількості примітивів, яку ви хотіли б, ПРОДУКЦІЇ, ЩО ТАКІ Ж ТИПІ. Якщо вам потрібно передати декілька типів примітивів, це також можна зробити, але вам доведеться змінити вищезазначене до:
private class MyTask extends AsyncTask<Object, Void, Void> {
@Override
protected void doInBackground(Object... params) {
long myLongParam = (Long) params[0];
int myIntParam = (Integer) params[1];
}
...
}
Це більш гнучко, але воно вимагає чіткого приведення параметрів до відповідних типів. Якщо ця гнучкість не потрібна (тобто окремий тип даних), я рекомендую дотримуватися першого варіанту, оскільки він трохи читабельніший.