簡體   English   中英

無法重新啟動廣播接收器?

[英]unable to reboot the Broadcast receiver?

我正在創建一個使用服務組件的服務,我想始終在后台運行該應用程序。 假設我關閉了手機,當我在手機上時,我們的應用程序即自動關閉。

正在嘗試此代碼

androidManifest.xml

<receiver android:name=".receiver.ConnectionReceiver">
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver>  

並在BroadCastreceiver類更新中添加此代碼

private class ConnectionReceiver extends BroadcastReceiver{

        private Timer mTimer;
        private TimerTask mTimerTask;
        private long interval;

        @Override
        public void onReceive(Context context, Intent intent) {
             AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
             PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, ConnectionReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
             am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); 
                {
                calGps();
                }
                }

您必須添加清單權限條目:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

(當然,您應該列出應用程序使用的所有其他權限)。

然后,實現BroadcastReceiver類,它應該是簡單且快速的可執行文件。 最好的方法是在此接收器中設置一個警報以喚醒您的服務(如果沒有必要像Prahast所寫的那樣保持其正常運行)。

public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi);
}}

然后,將Receiver類添加到清單文件中:

<receiver android:enabled="true" android:name=".receivers.BootUpReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

利瑪·羅斯

您想在設備啟動后啟動服務/活動。 檢查以下鏈接,您將了解如何使用BroadcastReceiver。

在啟動時自動啟動應用程序

在啟動時啟動服務

希望對您有幫助。

新答案:

在接收者清單文件的intent-filter中添加<category android:name="android.intent.category.HOME" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM