android.app.ActivityManager.AppTask доступ к статическому классу ‘ нестатический метод

#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. Вы пытаетесь закрыть приложение из другого приложения?