#java #android #scope #static #non-static
#java #Android #область #статический #нестатический
Вопрос:
Я знаю, что об этом спрашивали, но, похоже, я не смогу решить эту проблему. Я пытаюсь получить доступ к статическому AppTask
классу, нестатическому общедоступному методу void finishAndRemoveTask
. Но я получил много ошибок без успеха во время компиляции.
import static android.app.ActivityManager.AppTask;
import static java.lang.System.out;
public class ExitMyApp {
public void exit() {
AppTask.finishAndRemoveTask();
}
}
Если я это сделаю, я получу сообщение об ошибке non static method cannot be accessed in static way
. Это понятно, поскольку finishAndRemoveTask
public void и еще не существует. Итак, я его создаю:
finishAndRemoveTask finandremove = new AppTask.finishAndRemoveTask();
Теперь я получаю сообщение об ошибке cannot find symbol
. Может кто-нибудь дать мне подсказку о том, как использовать этот finishAndRemoveTask
метод?
Ответ №1:
finishAndRemoveTask() не является статическим методом, поэтому вы не можете вызвать его без экземпляра, и способ его создания неверен. Вам нужно получить ссылку на AppTask, например:
ActivityManager manager =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
PackageManager pm = getPackageManager();
for (AppTask task : manager.getAppTasks()) {
//if task is matching your task/activity
task.finishAndRemoveTask();
}
Комментарии:
1. Я импортирую свой java-файл в файл python и запускаю его оттуда. Я пытаюсь закрыть запущенное приложение Kivy. Цель состоит в том, чтобы
Finishes all activities in this task and remove it from the recent tasks list
, следовательно, закрыть мое приложение. Должно ли это вызываться для каждой задачи?2. если это ваша цель, я не понимаю, почему вы не можете, просто закройте все задачи.
3. Можно ли просто вызвать метод
finishAndRemoveTask()
, не вызывая его в каждой задаче? Тем самым останавливая приложение.4. Учитывая тот факт, что мой класс вызывается извне, это означает, что ваша переменная
context
и методgetPackageManager()
не имеют экземпляра. Поскольку мой компилятор сообщает мне, что они не знают, откуда они берутся. Также переменнаяpm
объявлена, но не используется.5. Вы пытаетесь закрыть приложение из другого приложения?