Android程序如何自啓動

 1、開機自啓動。 這是最簡單的自啓動方式,只需要在Manifest.xml文件中,註冊監聽 android.intent.action.BOOT_COMPLETED 事件並且授權。然後新建監聽器監聽廣播。 Manifest.xml文件註冊內容如下:

<uses-permission android.name = "android.permission.BOOT_COMPLETED"/>

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

然後新建監聽器

 public class myBroadcastReceiver extends BroadcastReceiver
{
    public void onReceive(Context context, Intent intent)
    {
	if(intent.getaction().equals(“android.intent.action.BOOT_COMPLETED))
	{
	     //可以觸發自定義事件
	     intent wakeIntent = new Intent();
	     //從receiver中啓動activity必須得加此標記
	     wakeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	     wakeIntent.setclass(context, MainActivity.class);
	     context.startActivity(wakeIntent);
	}	
    }
}

 2、android的進程有六個優先級別,分別是:一、前臺進程 二、可見進程 三、次要服務進程 四、後臺進程 五、內容供應節點六、空進程。通過在Mainfest中設置應用屬性爲 android:persistent = "true",可以將應用提升爲系統級進程,etting->application裏面也會屏蔽掉stop操作。但需要將應用的apk放到 system/app/目錄下安裝,自己試過後發現,system/app/目錄下無法手動修改。因此這步沒有成功。
  3、完全讓進程不被kill是不可能的,我們可以通過一些操作,使進程被kill機率變小
1)後臺操作採用運行前臺Service形式,因爲一個運行着service的進程比一個運行着後臺activity的等級高
2)按back鍵使得進程中的activity在後臺運行而不是destroy,需要載back按鍵
3)依賴於其他優先級高的進程
  4、監聽系統其他廣播,如解鎖。

uses-permission android.name = "android.permission.USER_PRESENT"/>
<receiver android:name = ".*Activity" 
      <intent-filter> 
             <action android:name = "android.intent.action.USER_PRESENT"/> 
      <intent-filter>
</receiver>

或者監聽電量改變事件,但實驗中在xml文件中直接註冊並沒有效果,需要在MainActivity中新建一個service,並在service的onStartCommand中通過registerReceiver(bcBroadcastReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED))註冊廣播接收器; 使用unregisterReceiver(bcBroadcastReceiver)來註銷廣播接收器。
 5、進程守衛。不明覺厲,最簡單的就是在service1的onDestroy方法裏寫上啓動service2的代碼,在Service2的onDestroy中寫上啓動Service1的代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章