2014-04-01 85 views
2

不知道什麼是這裏的問題。以下代碼不起作用。在使用類似的代碼之前,我使用了未決的意圖,但從未遇到過這個問題。請幫助。越來越印刷Android的等待意向與報警管理器不工作

從Main.java日誌報表,但沒有東西從PublicData.class登錄

Main.java

AlarmManager alarm; 
long gap = 1800000; 
Calendar cal; 

Log.d("Stoned", "pending intent about to create"); 
Intent i = new Intent(this, PublicData.class); 
PendingIntent pint = PendingIntent.getService(
     this, 0, i, 0); 
Log.d("Stoned", "pending intent creating"); 
alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
alarm.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(), 
     gap, pint); 
Log.d("Stoned", "pending intent created"); 

PublicData.java

public class PublicData extends IntentService { 


    @Override 
    protected void onHandleIntent(Intent intent) { 
      Log.d("Stoned", "In pending intent"); 

    } 

. 
. 
+0

按照以下步驟1.延伸的BroadcastReceiver 2.使用的onReceive()按照此[鏈接](http://stackoverflow.com/questions/20112247/could-alarmmanager-setinexactrepeating-not-broadcast-intents-when -the-device-is/20112991#20112991) – Saj

回答

0

的問題是,第二個參數是偏移量,當第一次調用警報時。如果使用當前的時間,這將花費數千小時到第一個電話......

alarm.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(), gap, pint);

應(立即重複)

alarm.setRepeating(AlarmManager.RTC, 0, gap, pint);

參見:http://developer.android.com/reference/android/app/AlarmManager.html#setRepeating%28int,%20long,%20long,%20android.app.PendingIntent%29


編輯:

您也可以使用此:

long interval = DateUtils.SECOND_IN_MILLIS * 30; 
long firstWake = System.currentTimeMillis() + interval; 
am.setRepeating(AlarmManager.RTC_WAKEUP, firstWake, interval, pendingIntent); 
+0

謝謝。試過這個,但仍然不能正常工作 – ambit

+0

謝謝,但這不起作用。 – ambit

0

萬一別人也面臨同樣的問題,下面的東西爲我工作。我在清單中的服務聲明中添加了'android:exported =「true」'。另外,我使用了整個包名,而不僅僅是服務的類名。它在進行這些更改後起作用。

<service android:name="com.abc.def.PublicData" android:exported="true" >