2017-02-14 7 views
0

так я получил этот код, который получает других приложения имени пакетаКак сохранить код, всегда выполняющий его?

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfos = activityManager.getRunningAppProcesses(); 
    for (int i = 0; i < runningAppProcessInfos.size(); i++) { 
     ActivityManager.RunningAppProcessInfo runningAppProcessInfo = runningAppProcessInfos.get(i); 
     if (runningAppProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
      packagename= runningAppProcessInfo.pkgList[0]; 
     } 
    } 
    return packagename; 

и я поместил его в onStartCommand метода услуги, используя нить, и от моей основной деятельности я начал службу с intent.Now проблемы заключается в том, что код будет выполнен только один раз и когда при запуске приложения

Мне нужно, чтобы он всегда работал в фоновом режиме, пока не найдет имя пакета конкретного приложения (например, facebook или любое другое приложение), как я могу сделай это?

+0

что, если он не находит? – SaggingRufus

+0

@SaggingRufus будет продолжать слушать, пока это не произойдет, есть ли лучший сценарий, чем этот. – ibrahim

ответ

0

Вы не должны слушать его навсегда. Это приведет к утечке аккумулятора и производительности телефона.

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

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

Edit:

Несмотря я против него, и я думаю, что это не будет дружественным, если вам действительно нужно, чтобы запустить его в фоновом режиме и делать вещи в момент, когда пользователь открывает приложение, сделать while(true) петля к вашим услугам, но не забудьте поставить внутри нее sleep (минимум 1 секунду, я бы сказал).

Для документации и использования сигнализации см. https://developer.android.com/training/scheduling/alarms.html#set. Есть хорошие примеры и объясняет все, что вам нужно знать.

Edit 2:

Чтобы запустить службу "навсегда" в фоновом режиме, вы должны вернуться в START_STICKYonStartCommand в Service. Для получения дополнительной информации, есть некоторые ссылки:

И не забудьте запустить службу при загрузке системы:

+0

Как работают блокировки приложений? они всегда появляются с запросом кода безопасности, когда пользователь входит в защищенное приложение? они также используют сигналы тревоги? спасибо за ур ответить – ibrahim

+0

, и, если возможно, вы можете дать мне дополнительное объяснение аварийных сигналов и как их реализовать. – ibrahim

+0

@ibrahim. Я не уверен, как работают эти приложения. Но уточните мой обновленный ответ для получения дополнительной информации. –

 Смежные вопросы

  • Нет связанных вопросов^_^