安卓程序保活之Service設定為前台服務

2021-09-26 04:22:24 字數 1379 閱讀 4399

一、前台服務和普通服務有啥區別

普通服務使用者是無法感知的,只是在後台默默執行,而且優先順序比較低

前台服務優先順序更高,記憶體吃緊的時候更不容易被**,而且狀態列會顯示前台服務

設定前台服務出現通知的時候會有提示音,可通過builder.setsound(null,null);設定靜音

二、**如何實現

在普通service中通過設定startforeground(int id, notification notification)成為前台服務,可以看到需要建立乙個notification,關於notification有幾個需要注意的地方

安卓8.0以後建立notification需要乙個notificationchannel,否則普通的建立方法就導致通知不顯示

安卓8.0系統以前google有乙個bug,就是如果建立兩個id一樣的通知,那麼通知就會隱藏,因此如果在這個版本間不想讓使用者看到這個前台程序的話,可以再建立乙個id相同的通知

三、具體實現

public class myservice extends service 

@override

public void oncreate() else if (build.version.sdk_int >= build.version_codes.jelly_bean_mr2) else

}@override

public int onstartcommand(intent intent, int flags, int startid)

}).start();

return start_sticky;

}private void startplaymusic()

}private void stopplaymusic()

}@override

public void ondestroy()

stopplaymusic();

}}

2.建立乙個前台服務使notificationid相同,然後在取消該通知,關閉當前服務

public class cancelnoticeservice extends service 

@override

public int onstartcommand(intent intent, int flags, int startid)

}).start();

}return super.onstartcommand(intent, flags, startid);

}}

四、最後

不要忘了在清單檔案裡註冊這兩個服務?

安卓App程序保活

1.alarmmanager service 為確保更穩定的存活,服務使用前台服務來保活。2.jobservice service 不穩定!原因 當jobservice的onstartjob返回true時,且在此過程中始終不手動執行jobfinished時,10min後會自動執行onstopjob,...

安卓程序保活那些事,你知道多少?

那麼他們是如何做到的呢?一畫素保活法。雙程序守護保活法。賬號同步機制拉活。開啟前台service。jobscheduler拉活。sticky拉活。他們這麼做的原因是什麼?im 即時通訊 保活 重點 重點 重點 但這樣的做法過於流氓,影響android手機的效能。不建議使用!但是有時候又沒有辦法。但是...

安卓跨程序繫結service

今天在學習aidl通訊的時候,使用的是兩個應用,乙個充當客戶端,乙個充當服務端,在使用客戶端繫結服務端的服務的時候一直繫結不成功。原來是使用的魅藍機型的問題。上 服務端androidmanifest.xml部分 沒啥說的 客戶端 示例1 魅藍和華為都可以繫結成功 private void binds...