庇谋溃活

1苦始、后臺音樂保活
(1)慌申、前后臺管理

public class ForegroundCallbacks implements Application.ActivityLifecycleCallbacks {
    public static final long CHECK_DELAY = 500;
    public static final String TAG = ForegroundCallbacks.class.getName();
    public interface Listener {
        public void onBecameForeground(Activity activity);
        public void onBecameBackground(Activity activity);
    }
    private static ForegroundCallbacks instance;
    private boolean foreground = false, paused = true;
    private Handler handler = new Handler();
    private List<Listener> listeners = new CopyOnWriteArrayList<Listener>();
    private Runnable check;
    public static ForegroundCallbacks init(Application application){
        if (instance == null) {
            instance = new ForegroundCallbacks();
            application.registerActivityLifecycleCallbacks(instance);
        }
        return instance;
    }
    public static ForegroundCallbacks get(Application application){
        if (instance == null) {
            init(application);
        }
        return instance;
    }
    public static ForegroundCallbacks get(Context ctx){
        if (instance == null) {
            Context appCtx = ctx.getApplicationContext();
            if (appCtx instanceof Application) {
                init((Application)appCtx);
            }
            throw new IllegalStateException(
                    "Foreground is not initialised and " +
                            "cannot obtain the Application object");
        }
        return instance;
    }
    public static ForegroundCallbacks get(){
        if (instance == null) {
            throw new IllegalStateException(
                    "Foreground is not initialised - invoke " +
                            "at least once with parameterised init/get");
        }
        return instance;
    }
    public boolean isForeground(){
        return foreground;
    }
    public boolean isBackground(){
        return !foreground;
    }
    public void addListener(Listener listener){
        listeners.add(listener);
    }
    public void removeListener(Listener listener){
        listeners.remove(listener);
    }
    @Override
    public void onActivityResumed(final Activity activity) {
        paused = false;
        boolean wasBackground = !foreground;
        foreground = true;
        if (check != null)
            handler.removeCallbacks(check);
        if (wasBackground){
            for (Listener l : listeners) {
                try {
                    l.onBecameForeground(activity);
                } catch (Exception exc) { }
            }
        } else {

        }
    }
    @Override
    public void onActivityPaused(final Activity activity) {
        paused = true;
        if (check != null)
            handler.removeCallbacks(check);
        handler.postDelayed(check = new Runnable(){
            @Override
            public void run() {
                if (foreground && paused) {
                    foreground = false;
                    for (Listener l : listeners) {
                        try {
                            l.onBecameBackground(activity);
                        } catch (Exception exc) {
                        }
                    }
                } else {
                }
            }
        }, CHECK_DELAY);
    }
    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
    @Override
    public void onActivityStarted(Activity activity) {}
    @Override
    public void onActivityStopped(Activity activity) {}
    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
    @Override
    public void onActivityDestroyed(Activity activity) {}
}

在Application使用

 private MediaPlayer mediaPlayer = null;
 ForegroundCallbacks.init(this);
 ForegroundCallbacks.get().addListener(new ForegroundCallbacks.Listener() {
                @Override
                public void onBecameForeground(Activity activity) {
                    //在前臺
                    //todo 蹦把。活1
                    if (null!=mediaPlayer) {
                        mediaPlayer.stop();
                        mediaPlayer.release();
                        mediaPlayer=null;
                    }
                }
                @Override
                public void onBecameBackground(Activity activity) {
                    //在后臺
                    // todo 保活1 根據(jù)音樂資源文件創(chuàng)建MediaPlayer對象 設置循環(huán)播放屬性 開始播放
                    if (null == mediaPlayer) {
                        mediaPlayer = MediaPlayer.create(activity, R.raw.no_notice);
                        mediaPlayer.setLooping(true);
                    }
                    if (!mediaPlayer.isPlaying()) {
                       mediaPlayer.start();
                    }
                }
            });

通知權限碧愀龋活
...

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咨油,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子柒爵,更是在濱河造成了極大的恐慌役电,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棉胀,死亡現(xiàn)場離奇詭異法瑟,居然都是意外死亡囱晴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門瓢谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驮瞧,你說我怎么就攤上這事氓扛。” “怎么了论笔?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵采郎,是天一觀的道長。 經(jīng)常有香客問我狂魔,道長蒜埋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任最楷,我火速辦了婚禮整份,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘籽孙。我一直安慰自己烈评,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布犯建。 她就那樣靜靜地躺著讲冠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪适瓦。 梳的紋絲不亂的頭發(fā)上竿开,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音玻熙,去河邊找鬼否彩。 笑死,一個胖子當著我的面吹牛揭芍,可吹牛的內(nèi)容都是我干的胳搞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼称杨,長吁一口氣:“原來是場噩夢啊……” “哼肌毅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起姑原,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤悬而,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锭汛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笨奠,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡袭蝗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了般婆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片到腥。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔚袍,靈堂內(nèi)的尸體忽然破棺而出乡范,到底是詐尸還是另有隱情,我是刑警寧澤啤咽,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布晋辆,位于F島的核電站,受9級特大地震影響宇整,放射性物質(zhì)發(fā)生泄漏瓶佳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一鳞青、第九天 我趴在偏房一處隱蔽的房頂上張望霸饲。 院中可真熱鬧,春花似錦盼玄、人聲如沸贴彼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽器仗。三九已至,卻和暖如春童番,著一層夾襖步出監(jiān)牢的瞬間精钮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工剃斧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轨香,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓幼东,卻偏偏與公主長得像臂容,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子根蟹,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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