У меня есть отдельный файл класса, который расширяет Asynctask (вместо внутреннего класса), и мне нужно, чтобы он выполнял различные операции с базой данных в зависимости от того, что пользователь делает (щелкает, проводит) в других действиях. Хотя мой код работает должным образом, я не знаю, является ли общепринятым способом запуска правильных операций базы данных использование методов stati c и логических флагов stati c. Есть ли другой подход, который мне не хватает, возможно, шаблон дизайна? Это очень упрощенная версия моего кода для иллюстрации.
FirstActivity. java
public class FirstActivity extends AppCompatActivity {
private static boolean wasSwiped = false;
… // other code
// to detect swipes
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
if( // swipe was determined) {
wasSwiped = true;
new UpdateDatabaseTask().execute();
}
public static boolean getWasSwiped() {
return wasSwiped;
}
public static void setWasSwiped(boolean b) {
wasSwiped = b;
}
}
SecondActivity. java
public class SecondActivity extends AppCompatActivity {
private static boolean wasTapped = false;
… // other code
// to detect taps
@Override
public boolean onSingleTapUp(MotionEvent e) {
wasTapped = true;
new UpdateDatabaseTask().execute();
}
public static boolean getWasTapped() {
return wasTapped;
}
public static void setWasTapped(boolean b) {
wasTapped = b;
}
}
UpdateDatabaseTask. java
public class UpdateDatabaseTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Object… objectArray) {
... // code to initialize database
if(FirstActivity.getWasSwiped() {
// do something with database
FirstActivity.setWasSwiped(false);
}
if(SecondActivity.getWasTapped() {
// do something different with database
SecondActivity.setWasTapped(false);
}
}
}