日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中1像素Activity进程保活

發布時間:2023/12/10 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中1像素Activity进程保活 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

Android8.0馬上就要發布,Google對于安卓市場上各種應用占據內存空間的問題不斷進行內存完善,我們的應用進程很難再保持不死之身,以前的服務喚醒在5.0已經失效,現在我們盡可能的做到保活方式就是提高進程的優先級,本文介紹一種1像素Activity保活進程的實現(據說QQ也在用)。
其整個邏輯就是在手機屏幕黑屏時,我們啟動一個1像素的Activity,其占用內存很小畢竟只有1像素嘛,無形中減小了內存的回收幾率,在屏幕亮的時候就關閉該頁面。

實現步驟

1、首先需要在MainActivity中注冊一個監聽手機屏幕狀態的廣播監聽:
//注冊監聽屏幕的廣播mOnepxReceiver = new OnePixelReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.intent.action.SCREEN_OFF"); intentFilter.addAction("android.intent.action.SCREEN_ON"); intentFilter.addAction("android.intent.action.USER_PRESENT"); registerReceiver(mOnepxReceiver, intentFilter);
2、監聽到屏幕狀態后的處理:
/*** Created by Administrator on 2017/7/10.* 監聽屏幕狀態的廣播*/ public class OnePixelReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { //屏幕關閉啟動1像素ActivityIntent it = new Intent(context, OnePiexlActivity.class);it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(it);} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { //屏幕打開 結束1像素context.sendBroadcast(new Intent("finish"));Intent main = new Intent(Intent.ACTION_MAIN);main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);main.addCategory(Intent.CATEGORY_HOME);context.startActivity(main);}} }
3、創建我們的1像素的Activity:
/*** Created by Administrator on 2017/7/10.*/ public class OnePiexlActivity extends Activity {private BroadcastReceiver endReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//設置1像素Window window = getWindow();window.setGravity(Gravity.LEFT | Gravity.TOP);WindowManager.LayoutParams params = window.getAttributes();params.x = 0;params.y = 0;params.height = 1;params.width = 1;window.setAttributes(params);//結束該頁面的廣播endReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {finish();}};registerReceiver(endReceiver, new IntentFilter("finish"));//檢查屏幕狀態checkScreen();}@Overrideprotected void onResume() {super.onResume();checkScreen();}/*** 檢查屏幕狀態 isScreenOn為true 屏幕“亮”結束該Activity */private void checkScreen() {PowerManager pm = (PowerManager) OnePiexlActivity.this.getSystemService(Context.POWER_SERVICE);boolean isScreenOn = pm.isScreenOn();if (isScreenOn) {finish();}} }
4、我們還需要設置1像素activity為透明,不然可能會影響體驗,但是影響不大,1像素畢竟是挑戰視力的存在。
<style name="OnePixelActivity" parent="android:Theme.Holo.Light.NoActionBar">//無標題<item name="android:windowIsTranslucent">true</item>//透明</style>
5、AndroidManifest配置
<activityandroid:name=".OnePiexlActivity"android:screenOrientation="portrait"android:theme="@style/OnePixelActivity"/>

總結

以上為1像素保活進程的基本實現,另外保活進程還可以通過啟動前臺service和提升service優先級來實現。


作者:將行陌路
鏈接:https://www.jianshu.com/p/ef4a9531bc15
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的Android中1像素Activity进程保活的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。