2016-09-25 65 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来拯救的一个领域。如果在重新启动后将它们设置为保留,它们在重新启动后不会丢失。

相关问题