2011-12-10 104 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); 
相关问题