android startForeground去除通知欄

首先寫一個BootstartService,顧名思義,這個service只是起引導作用,干完活就退出了。最精華的部分其實就是這句stopSelf(),說白了這個service其實還沒起起來就被停掉了,這樣onDestroy()里就會調用stopForeground(),通知欄的常駐通知就會被消掉。

public class BootstartService extends Service {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        startForeground(this);  
        // stop self to clear the notification  
        stopSelf();  
    }  
  
    @Override  
    public void onDestroy() {  
        super.onDestroy();  
        stopForeground(true);  
    }  
  
    public static void startForeground(Service context) {  
        context.startForeground(8888, new Notification());  
    }  
}  

接下來寫我們的主service,主service會先調用一次startForeground(),然后再啟動BootstartService。

public class MainService extends Service {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        BootstrapService.startForeground(this);  
        // start BootstartService to remove notification  
        Intent intent = new Intent(this, BootstartService.class);  
        startService(intent);  
    }  
  
    @Override  
    public void onDestroy() {  
        super.onDestroy();  
        stopForeground(true);  
    }  
}  

看到這里大家應該已經明白了,說白了就是兩個service共用一個notification ID,第一個service起來的時候會顯示通知欄,然后第二個service停掉的時候去除通知欄。

參考文章

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 如何能讓我們的應用能夠在系統后臺持續地運行是一個自Android從娘胎里出來時就議論不停的話題,而且這似乎成了一個...
    駿駿的簡書閱讀 1,130評論 1 19
  • Service的生命周期 service的生命周期,從它被創建開始,到它被銷毀為止,可以有兩條不同的路徑: A s...
    _執_念__閱讀 1,581評論 0 19
  • 參考: 服務|Android Developers 一. 什么是服務 服務是一個可以在后臺執行長時間運行操作而不提...
    NickelFox閱讀 557評論 0 3
  • 轉載注明出處:http://www.lxweimin.com/p/a1d3d9693e91 1. 簡介 與前一篇An...
    王三的貓阿德閱讀 1,961評論 1 9
  • 前言:本文所寫的是博主的個人見解,如有錯誤或者不恰當之處,歡迎私信博主,加以改正!原文鏈接,demo鏈接 Serv...
    PassersHowe閱讀 1,439評論 0 5