Я хотел бы обновить пользовательский интерфейс своего приложения, но ТОЛЬКО если мое приложение находится на переднем плане - PullRequest
0 голосов
/ 10 марта 2012

У меня есть очень простое приложение - оно включает и выключает Bluetooth в зависимости от того, подключено ли оно.

Приложение сейчас также очень простое с точки зрения пользовательского интерфейса - там есть 1 кнопка, которая позволяет включать и выключать Bluetooth, если вы хотите.

У меня на самом деле это работает, и я выяснил, как обновить кнопку, но я хотел бы обновить свой пользовательский интерфейс, только если приложение находится на переднем плане - так что, если я подключу свой телефон, и я НЕ в моем приложении, я не хочу, чтобы мое приложение всплыло и обновило пользовательский интерфейс - я хочу, чтобы пользовательский интерфейс менялся только в том случае, если приложение было открыто, когда я подключил телефон.

Я попробовал следующий код, и он действительно находит приложение в списке запущенных приложений, но он открывает приложение, независимо от того, что - то есть, оно откроет приложение и обновит мой пользовательский интерфейс, было ли оно открыто раньше или нет.

  ActivityManager activityManager = (ActivityManager) context.getSystemService( Context.ACTIVITY_SERVICE );
  List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();

    for(RunningAppProcessInfo appProcess : appProcesses){
        if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
            Log.i("Foreground App", appProcess.processName);
            if(appProcess.processName.equals("vermel.BluetoothOn")) {
                    //update UI
            }
        }
    }

Что я делаю не так? Пожалуйста, имейте в виду, что я новичок в Java и Android, и буду очень признателен за подробное объяснение, а не за ссылку на документацию по разработке для Android;)

Спасибо за чтение!

1 Ответ

0 голосов
/ 10 марта 2012

Если вы добавите @Override onWindowFocusChanged(boolean hasFocus) в свою активность, вы сможете отслеживать, когда у вас есть фокус, а когда нет.затем вы можете подождать, пока у вас не появится возможность обновить свой интерфейс.

...