Android - 保活(2)一像素崩吃ぃ活

老婆保佑,代碼無(wú)BUG

目錄

  • 一:原理
  • 二:實(shí)現(xiàn)
      1. 一像素的Act
      1. 廣播
      1. 清單文件注冊(cè)
      1. 透明主題
      1. 注冊(cè)廣播

一:原理

當(dāng)屏幕熄滅的時(shí)候呢项滑,鎖屏狀態(tài)依沮,調(diào)起一個(gè)一像素的Activity,為的還是能夠提高進(jìn)程的優(yōu)先級(jí)杖们,在上一篇文章中肩狂,有詳細(xì)的進(jìn)程優(yōu)先級(jí)的情況

二:實(shí)現(xiàn)

1. 一像素的Act

package com.cpsc.sanya.act;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.PowerManager;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;

/**
 * 描述:
 * <p>
 * <p>
 * 一像素的ACT
 *
 * @author allens
 * @date 2018/1/24
 */

public class OnePxActivity extends Activity {
    private static final String TAG = "OnePx";
    private BroadcastReceiver endReceiver;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate--->啟動(dòng)1像素闭辏活");
        // 獲得activity的Window對(duì)象,設(shè)置其屬性
        Window mWindow = getWindow();
        mWindow.setGravity(Gravity.LEFT | Gravity.TOP);
        WindowManager.LayoutParams attrParams = mWindow.getAttributes();
        attrParams.x = 0;
        attrParams.y = 0;
        attrParams.height = 1;
        attrParams.width = 1;
        mWindow.setAttributes(attrParams);

        //結(jié)束該頁(yè)面的廣播
        endReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.d(TAG, "onReceive--->finish");
                finish();
            }
        };
        registerReceiver(endReceiver, new IntentFilter("finish"));
        checkScreen();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    /**
     * 檢查屏幕狀態(tài)  isScreenOn為true  屏幕“亮”結(jié)束該Activity
     */
    private void checkScreen() {
        PowerManager pm = (PowerManager) OnePxActivity.this.getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn = pm.isScreenOn();
        if (isScreenOn) {
            finish();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(endReceiver);
    }

}

2. 廣播

package com.cpsc.sanya.receiver;

import android.content.BroadcastReceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.cpsc.sanya.act.OnePxActivity;

/**
 * 描述:
 * <p>
 * <p>
 * 廣播
 *
 * @author allens
 * @date 2018/1/24
 */

public class OnePixelReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //屏幕關(guān)閉啟動(dòng)1像素Activity
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Log.e("OnePx", "屏幕關(guān)閉啟動(dòng)1像素Activity");
            Intent it = new Intent(context, OnePxActivity.class);
            it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(it);
            //屏幕打開(kāi) 結(jié)束1像素
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Log.e("OnePx", "屏幕打開(kāi) 結(jié)束1像素");
            context.sendBroadcast(new Intent("finish"));
        }
    }
}

3. 清單文件注冊(cè)

  <!-- 一像素 -->
        <activity
            android:name="com.cpsc.sanya.act.OnePxActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard"
            android:excludeFromRecents="true"
            android:finishOnTaskLaunch="false"
            android:launchMode="singleInstance"
            android:theme="@style/OnePxActStyle" />

4. 透明主題

  <style name="OnePxActStyle">
        <!-- 窗體背景顏色為透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 窗體沒(méi)有邊框 -->
        <item name="android:windowFrame">@null</item>
        <!-- 窗體不包含標(biāo)題欄 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 窗體懸浮 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 自定義TitleBar時(shí)去掉多余的陰影-->
        <item name="android:windowContentOverlay">@null</item>
        <!-- 不允許窗體背景變暗-->
        <item name="android:backgroundDimEnabled">false</item>
        <!-- 窗體切換無(wú)動(dòng)畫-->
        <item name="android:windowAnimationStyle">@null</item>
        <!-- 禁用窗口的預(yù)覽動(dòng)畫-->
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowNoDisplay">false</item>
    </style>


5. 注冊(cè)廣播

 IntentFilter intentFilter = new IntentFilter();
 intentFilter.addAction(Intent.ACTION_SCREEN_ON);
 intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
 registerReceiver(new OnePixelReceiver(), intentFilter);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市审磁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌态蒂,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件手素,死亡現(xiàn)場(chǎng)離奇詭異瘩蚪,居然都是意外死亡疹瘦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)险胰,“玉大人,你說(shuō)我怎么就攤上這事鲸阻“匣粒” “怎么了鸟悴?”我有些...
    開(kāi)封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沛贪。 經(jīng)常有香客問(wèn)我震贵,道長(zhǎng),這世上最難降的妖魔是什么猩系? 我笑而不...
    開(kāi)封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任寇甸,我火速辦了婚禮,結(jié)果婚禮上拿霉,老公的妹妹穿的比我還像新娘。我一直安慰自己绽淘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布壮池。 她就那樣靜靜地躺著伦意,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熏矿。 梳的紋絲不亂的頭發(fā)上离钝,一...
    開(kāi)封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音卵渴,去河邊找鬼。 笑死昔榴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的互订。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼氮墨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吐葵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起温峭,我...
    開(kāi)封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诚镰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后清笨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體刃跛,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年检号,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛙酪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凹蜂,死狀恐怖阁危,靈堂內(nèi)的尸體忽然破棺而出玛痊,到底是詐尸還是另有隱情狂打,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布对省,位于F島的核電站,受9級(jí)特大地震影響蒿涎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萤捆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一俗批、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岁忘,春花似錦、人聲如沸干像。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)五鲫。三九已至,卻和暖如春位喂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塑崖。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工规婆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聋呢。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像通铲,于是被迫代替她去往敵國(guó)和親器贩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颅夺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容