本文參考自:http://blog.csdn.net/hmg25/article/details/6288070java
本人最近想寫個app,可是其間須要用到開機自啓以及不被殺死的功能。android
在網上看到高煥堂線程以「Don't call me, I'll call you back!」來總結Android框架,真是說到點子上了。理解這句話的含義後,不少關於Android平臺上某種功能實現的問題就能迎刃而解了。web
使用場景:手機開機後,自動運行程序,在屏幕上顯示"Hello. I started!"字樣。app
背景知識:當Android手機啓動時,會發出一個系統廣播,叫作:ACTION_BOOT_COMPLETED,它的字符串表示常量爲android.intent.action.BOOT_COMPLETED。因此只要在開始時程序中捕獲這個廣播消息,一切就好辦了。框架
代碼以下:ide
一、界面代碼,this
package com.andy.zhu; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.app.Activity; import android.content.Intent; public class MainActivity extends Activity { private Button button_test_service; private Intent intent; private Button button_stop; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("hello started"); setContentView(tv); } }
二、接受廣播消息,因此新建一個類,並繼承BroadcastReceiverspa
package com.andy.zhu; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.util.Log; public class BootRestartReceiver extends BroadcastReceiver { private final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(ACTION)); { Intent intent2 = new Intent(context, MainActivity.class); intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); Log.d("DEBUG", "開機自動服務自動啓動..."); //Intent intentService = new Intent(); //intentService.setClass(context, MyService.class); //context.startService(intentService); } } }
代碼都很簡單。重寫onReceiver方法,實現要實現的功能就好了。.net
三、配置menifest.xml文件線程
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.andy.zhu" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:persistent="true" android:theme="@style/AppTheme" > <activity android:name="com.andy.zhu.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 向系統註冊receiver --> <receiver android:name="com.andy.zhu.BootRestartReceiver" > <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <!-- 添加權限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> </manifest>
OK,大功告成,安裝到手機或者模擬器上,重啓一下看看效果吧。