編輯:關於Android編程
9. 銷毀采用啟動方式創建的服務對象有兩種方式: a, 在啟動者中調用stopService方法 b,在Service中當Service把它的任務執行完之後在Service中調用stopService
列: Intent stopIntent =new Intent(this, MyService.class);
stopService(stopIntent);//銷毀采用啟動
10. 采用啟動的方式創建Service的時候, Service的生命周期由3個方法構成:
onCreate() 表示服務對象被創建 該方法僅在服務對象新建的時候才會調用
onStartCommand() 表示服務啟動運行
onDestroy() 表示服務對象被銷毀
服務第一次新建生命周期的調用: onCreate() --->onStartCommand()
服務對象已經創建過, 反復的啟動該服務, 聲明周期的調用: 反復的調用onStartCommand()
通過stop相關的方法停止一個服務, 生命周期的執行: 直接調用onDestory()
//判斷在那個線程運行;
Thread.currentThread().getName());
11. 服務運行於主線程中, 在服務中不能直接進行耗時操作.(如果需要在服務中執行耗時的操作,應該在服務中開辟子線程)
12. 借助於MediaPlayer理解Service的後台特性
用Activity播放音樂的特點: 當界面不退出音樂的播放和暫停都是正常. 如果在音樂播放的時候,退出了界面,當重新進入界面的時候音樂的播放和暫停都不在正常. 這種結果的原因: Activity是提供用於界面的前台組件,當退出界面的時候,當前的Activity就會被銷毀, 當再次進入的界面的時候, 又會重新創建一個新的Activity, 伴隨這個新的Activity的創建又會創建一個新的MediaPlayer, 在現在的界面在操作MediaPlayer的時候, 控制的就是第二個MediaPlayer對象.
如果無論界面有沒有打開音樂的播放都能夠進行, 同時界面打開關閉多少次, 再次打開的時候都能正常控制音樂的播放, 就需要通過服務實現
用Service播放音樂的可以實現後台播放, 界面再次打開依舊能夠控制音樂的播放的原因: 采用啟動的方式創建的Service在界面退出的時候不會被銷毀,所以音樂依舊能在後台播放,同時因為Service沒有被銷毀, 所以再次打開界面的時候,操作的還是同一個服務對象, 該服務對象的MediaPlayer還是之前的MediaPlayer, 所以在控制音樂的播放操作的還是同一個MediaPlayer對象.
13. 當Android系統內存不夠用的時候,系統會強制殺死一些服務對象以恢復系統資源[保留足夠的內存保證Android系統本身的正常運行].當一個服務是被Activity綁定的, 如果該Activity處於前台運行則該服務被銷毀的可能性比較小.如果一個服務僅僅是采用啟動的方式創建,在後台運行,則這個服務被在系統內存不夠的時候, 被系統殺死的可能性會比較高. 當一個服務因系統內存不夠用而被系統強制銷毀, 在系統的內存恢復的時候, 系統會重新的創建被它銷毀的服務對象,在系統重新創建被銷毀的服務對象的時候, 可以在程序中通過onStartCommand()方法的返回值告知系統如何重新創建被銷毀的服務對象.
START_NOT_STICKY :(非粘性服務) 表示當前的服務對象因系統的內存不夠而被殺死, 當系統的內存重新恢復的時候, 之前被殺死的服務對象是不會重新啟動的.
START_STICKY: (粘性服務--->不帶值) 表示當前的服務因為系統的內存不夠被系統意外殺死之後, 在系統的內存重新恢復的時候, 之前因系統內存不夠而被殺死的服務對象會被重新創建出來. 但是不會把最後一次啟動服務的時候的Intent重新傳入onStartCommand方法中.
START_REDELIVER_INTENT: (粘性服務-->帶值) 表示當服務因為系統的內存不夠而被殺死, 在系統的內存恢復的時候, 會重新創建之前因內存不夠而被殺死的服務對象,同時會把之前最後一次啟動服務的時候創建的Intent對象傳入onStartCommand方法中.
14. IntentService
作用: 也是Service同樣滿足Service特性, 提供一個便捷的方式實現在Service中執行耗時的操作.
特點: 當服務的功能執行完畢之後, 該服務對象會自動銷毀.
Android中使用ListView實現漂亮的表格效果
在這裡我們要使用Android ListView來實現顯示股票行情,效果圖如下,紅色表示股票價格上漲,綠色表示股票價格下跌。第一步、定義color.xml如下:復制代碼
android開發教程之android的handler使用方法
Android Handler的使用,在講Handler之前,我們先提個小問題,就是如何讓程序5秒鐘更新一下Title.首先我們看一下習慣了Java編程的人,在不知道Ha
Android線程
說明:android的線程使用。android的線程無非就是Main Thread和Worker Thread。(除了主線程Main Thread之外的其他線程都是Wor
POP實踐 - 01
前言: 哇喔從題目是不是看出了什麼端倪, 沒錯我打算要造好多好多POP小輪子, 今天是輪子01 , 演示圖片我也是挑了好久呢, 博主真是用心呢, 中午空閒時間發出來, 沒