android軟件開發:程序的開機啓動

在Windows 平臺下安裝一些軟件時,經常會遇到一些軟件帶有自啓動設置。通常我會關掉這
些功能,除非對於某些重要的程序有必要開啓這項功能。在Android 平臺也可以方便的給程
序添加自啓動設置,下邊給出了具體的實現方法:
首先需要在Manifest 中做如下修改和補充:
?
View Code XML
<receiver android:enabled="true" android:name=".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>
程序主體中需要實現在Manifest 中聲明的BroadcastReceiver 類:
public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
1. 定義一個BroadcastReceiver
代碼:
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
Log.d("BootReceiver", "system boot completed");
//start activity
String action="android.intent.action.MAIN";
String category="android.intent.category.LAUNCHER";
Intent myi=new Intent(ctx,CustomDialog.class);
myi.setAction(action);
myi.addCategory(category);
myi.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(myi);
//start service
Intent s=new Intent(ctx,MyService.class);
ctx.startService(s);
}
}
2、配置Receiver 的許可,允許接收系統啓動消息,在AndroidManifest.xml 中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
3、配置Receiver,可以接收系統啓動消息,在AndroidManifest.xml 中
<receiver android:name=".app.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
4、啓動模擬器,可以看到系統啓動後,彈出一個對話框。
例一
如果您在開發一個需要實時更新數據的應用程序,當有新的數據的時候提醒用戶查看新的數
據,那麼您需要在後臺開起一個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();
AlarmManageram=(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>
例二:
android開機啓動service,適合鬧鐘程序實例中一共三個類
1.public class YourReceiver extends BroadcastReceiver
2.public class ServiceTest extends Service
3.public class ShowActivity extends Activity
發佈了81 篇原創文章 · 獲贊 65 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章