Как запустить код повторно после двух секунд в фоновом режиме в Android?

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

Код, приведенный ниже, работает только в течение некоторого времени, потому что Timer разрушается системой через некоторое время. Я также пробовал Alarm Manager, который запускает службу через 2 секунды, но потребляет слишком много памяти, даже если служба не содержит кода.

Пожалуйста (это было 3 дня подряд на поиске решения), предложите какой-нибудь другой способ повторять этот пакет кода в фоновом режиме каждые 2 секунды, не будучи уничтоженным системой.

   Timer timer  =  new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {

            ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
            final ActivityManager.RunningAppProcessInfo appProcess =runningAppProcessInfo.get(0) ;


                currentAppName = appProcess.processName.toString();


                Handler handler = new Handler(Looper.getMainLooper());

                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        if(temp.equalsIgnoreCase(currentAppName))
                        {

                        }
                        else
                        {  Toast.makeText(MyService.this.getApplicationContext(),appProcess.processName.toString(),Toast.LENGTH_SHORT).show();
                            temp=""+currentAppName;

                         }

                    }
                });
            for(int i=0;i<LockedApps.LockedAppsList.size();i++) {

                if (appProcess.processName.toString().contains(LockedApps.preflist.get(i))) {
                    if (flag == 0) {

                        Intent x = new Intent(getApplicationContext(), LockActivity.class);
                        x.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(x);

                    }

                }
            }

1 ответ

Вы использовали Таймер и AlarmManager отдельно. Почему бы вам не попробовать комбинацию Timer и AlarmManager, я имею в виду повторять сигнал тревоги каждые 30 секунд или 60 секунд, чтобы запустить службу, которая, в свою очередь, запустит таймер.

Другие вопросы по тегам