Есть ли способ вернуть активность моего приложения на передний план после неактивности пользователей? - PullRequest
0 голосов
/ 12 февраля 2019

Как разработчик Unity3D, я создал приложение и экспортировал его в Android Studio.Мой клиент просит меня вернуть это приложение на передний план после 10 секунд бездействия пользователя (в случае, если пользователь открывает другое приложение).Я попытался создать службу, которая запускается с помощью функции OnPause моей UnityPlayerActivity.Затем служба обнаружит бездействие пользователя и снова запустит мое приложение (вернув его на передний план).Сначала я пытался использовать Time.Schedule для запуска моего приложения через 10 секунд, несмотря ни на что, но каждый раз, когда приложение приостанавливается (переходит в фоновый режим), оно запускает службу, а затем происходит сбой.Вопрос: есть ли простой способ сделать это?Я не являюсь разработчиком Android Java (знаю только основы), и я борюсь с этой частью.

Я пытаюсь создать этот сервис, а затем пытаюсь запустить его из функции onPause ()в моей деятельности.Когда я приостанавливаю приложение на моем телефоне, приложение вылетает.Может кто-нибудь сказать мне, если я на правильном пути и, пожалуйста, помогите мне?

public class ReturnToForeground extends Service {
    public ReturnToForeground() {
    }

    // constant
    public static final long NOTIFY_INTERVAL = 10 * 1000; // 10 seconds

    // run on another Thread to avoid crash
    private Handler mHandler = new Handler();
    // timer handling
    private Timer mTimer = null;
    Intent intent = new Intent(this, UnityPlayerActivity.class);
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // cancel if already existed
        if (mTimer != null) {
            mTimer.cancel();
        } else {
            // recreate new
            mTimer = new Timer();
        }
        // schedule task
        mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
        return super.onStartCommand(intent, flags, startId);
    }

    class TimeDisplayTimerTask extends TimerTask {

        @Override
        public void run() {
            // run on another thread
            mHandler.post(new Runnable() {

                @Override
                public void run() {
                    // do action
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.setAction(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
                    startActivity(intent);
                }

            });
        }
    }
}

1 Ответ

0 голосов
/ 12 февраля 2019

Создайте таймер для того, когда приложение находится в onPause (), когда таймер достигает 10 секунд, вы должны передать намерение, которое снова сделает ваше приложение активным (скажем, возвращение пользователя к основному виду).Вы можете сохранить текущие данные вашего приложения в виде общих префиксов, чтобы в большинстве случаев информация не терялась.

Во многих случаях эта проблема возникает, когда ресурс, который вы пытаетесь перезагрузить, больше не активен.внутри приложения.

Из информации, которой вы поделились, создается впечатление, что вы не запускаете службу правильно.Было бы неплохо, если бы вы могли добавить журнал сбоев, чтобы мы могли отладить его и посмотреть, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...