實現 Android 應用在開機時自啟動

jopen 11年前發布 | 18K 次閱讀 Android Android開發 移動開發

      如果您在開發一個需要實時更新數據的應用程序,當有新的數據的時候提醒用戶查看新的數據,那么您需要在后臺開起一個Service,然后實時的去網 絡上獲取數據,但是如果用戶關機重啟,您的Service可能就消失了!那么怎么樣保證開機后你的Service還活躍的在用戶的手機里偷偷的從網絡上獲 取數據呢?

      很簡單,我們只要實現開機自啟動即可,android實現開機自啟動可能是移動操作系統中最簡單的了,我們只需要監聽一個開機啟動的 Broadcast(廣播)即可。首先寫一個Receiver(即廣播監聽器),繼承BroadcastReceiver,如下所示:

BootReceiver.java
    public class BootReceiver extends BroadcastReceiver {  
        private PendingIntent mAlarmSender;  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // 在這里干你想干的事(啟動一個Service,Activity等),本例是啟動一個定時調度程序,每30分鐘啟動一個Service去更新數據  
            mAlarmSender = PendingIntent.getService(context, 0, new Intent(context,  
                    RefreshDataService.class), 0);  
            long firstTime = SystemClock.elapsedRealtime();  
            AlarmManager am = (AlarmManager) context  
                    .getSystemService(Activity.ALARM_SERVICE);  
            am.cancel(mAlarmSender);  
            am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,  
                    30 * 60 * 1000, mAlarmSender);  
        }  
    }  

我們只需要在應用程序配置文件AndroidManifest.xml中注冊這個Receiver來監聽系統啟動事件
    <receiver android:name=".service.BootReceiver">  
        <intent-filter>  
        <!-- 系統啟動完成后會調用-->  
        <action android:name="android.intent.action.BOOT_COMPLETED">  
        </action>  
        </intent-filter>  
    </receiver>  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!