2011-12-10 98 views
0

我的代碼被罰款運行時,手機不處於睡眠模式應用程序未在睡眠模式下運行?

我使用的廣播接收器調用應用程序時的日期將被改變 代碼如下

public class DateReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("facebook_message", "Date Changed 1"); 

     intent=new Intent(context, project.runningservice.SendPost.class); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.add(Calendar.HOUR_OF_DAY, 13); 
     calendar.add(Calendar.MINUTE, 0); 
     calendar.add(Calendar.SECOND, 0); 
     AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     PendingIntent pi = PendingIntent.getService(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT); 

     try { 
      am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),pi); 
      Log.d("message", "Wait"); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

} 

和代碼清單文件是爲遵循

. 
. 
<receiver android:name="project.datereceiver.DateReceiver" 
        android:process=":remote"> 
      <intent-filter> 
       <action android:name="android.intent.action.DATE_CHANGED"/> 
      </intent-filter> 
     </receiver> 
. 
. 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
. 
. 

,我想我的服務類每天早上8點在運行時更改日期 但無法正常工作時,手機處於睡眠模式。 請告訴我我哪裏錯了?

回答

1

步驟#1:完全擺脫DateReceiver(類和清單條目)。

第2步:修改AlarmManager - 相關代碼中使用setRepeating()代替set()(和使用Calendar那就是在未來,和你很可能大約〜45%,創造了過去的日期),和呼叫當您的應用第一次運行並重新啓動時的代碼。

+0

感謝,這是工作,但它會影響備用電池或不? 我也想讓應用程序每天早晨在早上8點運行,所以這個可能性.plz告訴我。 –

+0

@PrathameshTalathi:「但它影響電池備份與否?」 - 什麼是「電池備份」? 「我也希望應用程序每天早晨在早上8點運行」 - 按照我提供的答案中的說明進行操作。 – CommonsWare

+0

我遵循所有步驟,但我想要開始重複任務,早上8點開始第一次。 –

0

試試這個:

System.currentTimeMillis().set(AlarmManager.RTC_WAKEUP, System.getTimeInMillis() + AlarmManager.INTERVAL_HOUR*13,pi); 
相關問題