Android開發:系統自動實現開機啟動
我們在前面已經講過了Android開發:自由選擇TextView的文字和如何實現TCP和UDP傳輸。如果您在開發一個需要實時更新數據的應用程序,當有新的數據的時候提醒用戶查看新的數據,那么您需要在后臺開起一個Service,然后實時的去網絡上獲取數據,但是如果用戶關機重啟,您的Service可能就消失了!那么怎么樣保證開機后你的Service還活躍的在用戶的手機里偷偷的從網絡上獲取數據呢?
很簡單,我們只要實現開機自啟動即可,Android實現開機自啟動可能是移動操作系統中最簡單的了,我們只需要監聽一個開機啟動的Broadcast(廣播)即可。首先寫一個Receiver(即廣播監聽器),繼承BroadcastReceiver,如下所示:
- 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>
就這樣,我們就實現了系統自啟動,怎么樣?是不是很簡單?
【編輯推薦】