2016-07-19 18 views
0

サービス内でハンマーを使用して、アンドロイドで遅延した後にメソッドを呼び出す。長い遅延では動作しませんが、同じコードは小さな遅延で動作します。遅延が1時間後に機能しない

Handler mHandler; 
Runnable runnable; 

mHandler = new Handler(); 
runnable=new Runnable() { 
    @Override 
    public void run() { 
     Log.i("START SERVICE", "START SERVICE:3 Call to Check Status is called"); 
     callToCheckStatus(); 
     mHandler.postDelayed(this, 1000*60*60); 
    } 
}; 
mHandler.postDelayed(runnable, 1000*60*60); 

一部のブログでは、デバイスが深いスリープ状態になると、動作しないことがわかりました。だから、Androidの中でメソッドを呼び出す正しい方法は何ですか?

+1

がAlarmManager' 'を見てみましょう試してみてください。https://developer.android.com/reference/android/app/AlarmManager.html – 0xDEADC0DE

+0

@ 0xDEADC0DE ..ありがとう。しかし、それは有用に見えませんでした。私はこれを読んだが、私はすでにブートレシーバを使用しているので、私はそれをどのアクティビティからもスケジュールすることはできません。私はサービスを開始し、60分後にメソッドを呼び出す必要があります。 – Alpesh

答えて

0

この

public static void intertiAdsStartTimer(Context cnxt) { 
    timer = new Timer(); 
    initializeTimerTask(cnxt); 
    //timer.schedule(timerTask, delayTime, repeatedTime); 
    timer.schedule(timerTask, 0, Integer.parseInt("7") * 60 * 1000); // 
} 

public static void initializeTimerTask(final Context cnxt) { 
    try { 
     final Handler handler = new Handler(Looper.getMainLooper()); 
     timerTask = new TimerTask() { 
      public void run() { 
       handler.post(new Runnable() { 
        public void run() { 
         try { 
          //call your method 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
      } 
     }; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

OR

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // Do something after 10s = 10000ms 

    } 
}, 10000); 
+0

私と同じではありませんか?実際には、デバイスが深いスリープ状態になると、実行可能ファイルは消滅します。それが問題です。 – Alpesh

関連する問題