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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android中1像素Activity进程保活

發(fā)布時(shí)間:2023/12/10 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中1像素Activity进程保活 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

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

實(shí)現(xiàn)步驟

1、首先需要在MainActivity中注冊(cè)一個(gè)監(jiān)聽(tīng)手機(jī)屏幕狀態(tài)的廣播監(jiān)聽(tīng):
//注冊(cè)監(jiān)聽(tīng)屏幕的廣播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、監(jiān)聽(tīng)到屏幕狀態(tài)后的處理:
/*** Created by Administrator on 2017/7/10.* 監(jiān)聽(tīng)屏幕狀態(tài)的廣播*/ public class OnePixelReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { //屏幕關(guān)閉啟動(dòng)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)) { //屏幕打開(kāi) 結(jié)束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、創(chuàng)建我們的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);//設(shè)置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);//結(jié)束該頁(yè)面的廣播endReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {finish();}};registerReceiver(endReceiver, new IntentFilter("finish"));//檢查屏幕狀態(tài)checkScreen();}@Overrideprotected void onResume() {super.onResume();checkScreen();}/*** 檢查屏幕狀態(tài) isScreenOn為true 屏幕“亮”結(jié)束該Activity */private void checkScreen() {PowerManager pm = (PowerManager) OnePiexlActivity.this.getSystemService(Context.POWER_SERVICE);boolean isScreenOn = pm.isScreenOn();if (isScreenOn) {finish();}} }
4、我們還需要設(shè)置1像素activity為透明,不然可能會(huì)影響體驗(yàn),但是影響不大,1像素畢竟是挑戰(zhàn)視力的存在。
<style name="OnePixelActivity" parent="android:Theme.Holo.Light.NoActionBar">//無(wú)標(biāo)題<item name="android:windowIsTranslucent">true</item>//透明</style>
5、AndroidManifest配置
<activityandroid:name=".OnePiexlActivity"android:screenOrientation="portrait"android:theme="@style/OnePixelActivity"/>

總結(jié)

以上為1像素保活進(jìn)程的基本實(shí)現(xiàn),另外保活進(jìn)程還可以通過(guò)啟動(dòng)前臺(tái)service和提升service優(yōu)先級(jí)來(lái)實(shí)現(xiàn)。


作者:將行陌路
鏈接:https://www.jianshu.com/p/ef4a9531bc15
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。