2016-03-25 17 views
0

2秒後に以下のコードを繰り返し実行したいのですが、私は何度も解決策を探してこれを見つけました。アンドロイドでバックグラウンドで2秒後にコードを繰り返し実行するには?

次のコードは、しばらくしてからシステムによってTimerが破棄されるため、いつか動作しています。また、2秒後にサービスを開始するAlarm Managerを試しましたが、サービスにコードが含まれていなくても多すぎるメモリを消費します。

解決に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別々に使用。タイマーとAlarmManagerの組み合わせを試してみるのはなぜですか?30秒または60秒ごとに繰り返しアラームを発して、サービスを開始し、タイマーを開始します。

関連する問題