Как запустить код повторно после двух секунд в фоновом режиме в 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 секунд, чтобы запустить службу, которая, в свою очередь, запустит таймер.