2016-09-25 61 views
0

假設我的接收器和服務是正確的,那麼即使在我重新啓動設備後,BOOT_COMPLETED仍會運行,並且我不會第一次打開/啓動它(應用程序)?那麼警報在它的到期日期和時間之後工作?即使我沒有在重新啓動後啓動應用程序,我仍然可以擁有BOOT_COMPLETED嗎?

注意:我不試圖在重新啓動後啓動應用程序。

這是我的清單

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" android:persistent="true"> 
    <receiver android:name="com.majimechibireminder2.OnBootReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.HOME" /> 
    </intent-filter> 
</receiver> 

    <receiver android:name=".AlarmReceiver"></receiver> 
    <service android:name=".ChibiReminderService" > 
</service> 
    <activity android:name=".ChibiRemind"></activity> 
</application> 

如果沒有,你可以建議我一些正確的代碼對那些我的理想工作。

+0

該應用程序需要至少啓動一次才能使用BOOT_COMPLETE。 – Shaishav

+0

沒有其他辦法嗎?如果用戶的日程表幾乎在預定的日期和時間,並且用戶在重新啓動後還沒有第一次運行/啓動應用程序,該怎麼辦? –

+0

通過AlarmManager設置的鬧鐘將在重新啓動後消失。 – Shaishav

回答

1

將您的應用程序安裝到手機以使其能夠接收廣播後,至少需要對其進行一次Lanuched。如果您正在使用鬧鐘,則無需擔心,因爲用戶需要打開應用程序才能設置特定的鬧鐘。

當手機關機時,鬧鐘將熄滅。重新啓動完成後,您的應用將收到BootCompleted操作。重新啓動後無需啓動應用程序。

如果用戶在安裝後未打開應用程序,則表示他/她沒有設置任何警報。因此,無需擔心在重新啓動後無法重新設置的情況下重新啓動。

更新:

嘗試增加屬性android:enabled="true"到您的接收器。最終的代碼應該是這樣的:

<receiver android:name=".OnBootReceiver" android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 
+0

嗯,我試圖設置一個報警,然後重新啓動設備,我不打開應用程序,我等待,直到時間,然後從預定的警報1分鐘過去了,該警報不會觸發。 –

+0

'OnBootReceiver'裏面的代碼是幹什麼的?你在那裏重設警報嗎? – Marat

+0

我開始意圖服務類,我重置服務類中的所有警報,然後重新安排它們。如果在設備重新啓動後啓動應用程序,我可以重新安排警報,但如果我沒有啓動應用程序,則不會安排警報。 –

0

AlarmManager設置的警報將在重新引導後丟失(沒有任何額外的操作)。

這是JobScheduler API來拯救的一個領域。如果在重新啓動後將它們設置爲保留,它們在重新啓動後不會丟失。

相關問題