android 前置service

在android開發中,如何寫一個不被幹掉的service一直是一個大問題。
尤其是現在這麼多一鍵加速的app,分分鐘讓你的服務被幹掉。

總結一下,從2.x版本一路走來,大家也研究了很多保護service不被幹掉的方法:
1. 最基本的,不要用bindService去開啓一個服務,而是用startService,因爲前者會將activity與service綁定到一起,當你的activity掛掉時,service也會掛掉,而大家都知道,當你的activity在後臺運行時,是非常容易被系統釋放掉的。
2. 其次,你可以在onStartCommand方法中,返回START_STICKY,其實這並不能保證服務不被幹掉,它只是表示該服務被幹掉後會自動重啓。但是這並不是一個特別好的辦法,因爲你是無法控制重啓的時間的
3. 設置android:process爲獨立進程。
4. 開啓一個前置服務:
這個詳細說一下。其實是你先開啓了一個服務,然後把這個服務給設置成前置的,對應的,要聲明一個Notification在推送欄裏,我想這是android防止大家都偷偷摸摸的開前置服務吧:

//開啓一個前置服務
                Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
                        System.currentTimeMillis());
                Intent notificationIntent = new Intent(context, MainActivity.class);
                PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
                notification.setLatestEventInfo(context, getText(R.string.action_settings),
                        getText(R.string.definition_High), pendingIntent);
                startForeground(1, notification);

需要注意一點,startForeground(1, notification); 的第一個參數如果是0,那不會在推送欄顯示Notification

發佈了46 篇原創文章 · 獲贊 55 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章