Android實(shí)現(xiàn)Service在前臺運(yùn)行服務(wù)
前言
在做手機(jī)音樂播放器的時(shí)候,讓我非??鄲赖囊患戮褪鞘謾C(jī)有清理內(nèi)存的軟件,比如百度,360等等,一點(diǎn)擊清理音樂就停止播放了,去后臺查看發(fā)現(xiàn)Service已經(jīng)被停止并重新啟動(dòng)了,這顯然不是我想要的,我希望音樂能夠在后臺播放,并且自己能控制什么時(shí)候退出,不想讓系統(tǒng)給我清理了,就像酷狗一直在通知欄顯示那樣,于是我就知道了在前臺運(yùn)行的服務(wù)。
實(shí)現(xiàn)
我們先看一下結(jié)果圖:
這是運(yùn)行在通知欄的界面,這樣就是讓服務(wù)在前臺運(yùn)行,再清理的時(shí)候就不會導(dǎo)致服務(wù)被關(guān)閉了。
好了,我們直接上代碼,因?yàn)橐_啟服務(wù),所以我們必須先要有一個(gè)Service的子類,然后在onCreate里面實(shí)現(xiàn)它。
MyService.java
public class MyService extends Service { public static final String TAG = "MyService"; @Override public void onCreate() { super.onCreate(); Notification notification = new Notification(R.drawable.ic_launcher, "有通知到來", System.currentTimeMillis()); Intent notificationIntent = new Intent(this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(this, "幻聽", "許嵩", pendingIntent); startForeground(1, notification); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); } @Override public IBinder onBind(Intent intent) { return null; } }
可以看到,在onCreate方法里面我們得到Notification的一個(gè)對象,然后調(diào)用startForeground(1, notification);方法來實(shí)現(xiàn)在前臺運(yùn)行。如果想要退出只需要退出服務(wù)即可。
小結(jié)
在前臺運(yùn)行服務(wù)是十分有用的,特別是在做播放器開發(fā)的時(shí)候,如果只是簡單的清理一下音樂就退出播放了,這是很不能容忍的。
像酷狗一樣,在通知欄有自己Notification的自定義界面,下一篇文章我說明如何自定義Notification的界面。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- android?Service基礎(chǔ)(啟動(dòng)服務(wù)與綁定服務(wù))
- Android服務(wù)Service教程
- Android8.0適配前臺定位服務(wù)service的示例代碼
- 淺談Android Service服務(wù)的高級技巧
- 說說在Android如何使用服務(wù)(Service)的方法
- Android 判斷某個(gè)服務(wù)(service)是否運(yùn)行
- Android Service服務(wù)詳細(xì)介紹及使用總結(jié)
- Android Service服務(wù)不被停止詳解及實(shí)現(xiàn)
- Android四大組件之Service服務(wù)詳細(xì)講解
相關(guān)文章
Android高級圖片滾動(dòng)控件實(shí)現(xiàn)3D版圖片輪播器
這篇文章主要介紹了Android高級圖片滾動(dòng)控件實(shí)現(xiàn)3D版圖片輪播器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05Android基于TextView實(shí)現(xiàn)跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了Android基于TextView實(shí)現(xiàn)跑馬燈效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android使用Volley實(shí)現(xiàn)上傳文件功能
這篇文章主要介紹了Android使用Volley實(shí)現(xiàn)上傳文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Android使用百度地圖出現(xiàn)閃退及定位時(shí)顯示藍(lán)屏問題的解決方法
這篇文章主要介紹了Android使用百度地圖出現(xiàn)閃退及定位時(shí)顯示藍(lán)屏問題的解決方法,需要的朋友可以參考下2018-01-01詳解Android創(chuàng)建Handler的必備知識點(diǎn)
本篇文章主要介紹Handler中需要了解的幾個(gè)必備知識點(diǎn),比如Handler創(chuàng)建、異步Handler是個(gè)啥及如何創(chuàng)建,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下2022-10-10Android中NavigationView的使用與相關(guān)問題解決
大家都知道NavigationView的引入讓 Android側(cè)邊欄實(shí)現(xiàn)起來相當(dāng)方便,最近公司項(xiàng)目中也使用這個(gè)新的控件完成了側(cè)邊欄的改版。在使用過程中遇到一些問題所以記錄一下。本文分為兩個(gè)部分,一是基本使用,二是相關(guān)問題的解決,感興趣的朋友們下面來一起看看吧。2016-10-10Android 日志系統(tǒng)Logger源代碼詳細(xì)介紹
本文主要介紹Android 日志系統(tǒng)Logger,這里整理了關(guān)于Android源碼的日志系統(tǒng)資料,有研究Android源碼的朋友可以參考下2016-08-08Android Jetpack架構(gòu)中ViewModel接口暴露的不合理探究
這篇文章主要介紹了Android Jetpack架構(gòu)組件 ViewModel詳解,ViewModel類讓數(shù)據(jù)可在發(fā)生屏幕旋轉(zhuǎn)等配置更改后繼續(xù)存在,ViewModel類旨在以注重生命周期的方式存儲和管理界面相關(guān)的數(shù)據(jù)。感興趣可以來學(xué)習(xí)一下2022-07-07