如何在android中的后台两秒后重复运行代码?

时间:2016-03-25 13:00:03

标签: android service timer alarmmanager applocker

我想在两秒钟后重复运行下面给出的代码片段,我多次搜索解决方案并找到这个。

  

下面给出的代码只能工作一段时间,因为Timer会在一段时间后被系统破坏。我还尝试了警报管理器,它在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 个答案:

答案 0 :(得分:1)

你单独使用了Timer和AlarmManager。你为什么不试试Timer和AlarmManager的组合,我的意思是说每30秒或60秒重复一次报警来分解服务,这反过来会启动计时器。