android 保證黑屏之後執行緒可以繼續執行

2021-08-09 21:08:25 字數 1218 閱讀 2729

最近在做關於android手機端gps定時定位的功能,需要每隔幾秒鐘將gps定位獲取的經緯度上傳至後台,但是發現某些手機在螢幕黑屏,進入休眠狀態後,後台就沒有收到定位資訊了,後來通過網上查詢資料,發現一旦手機在休眠的時候,手機的cpu也休眠了,建立的執行緒也會sleep,所以為了讓手機螢幕黑屏之後,上傳執行緒可以繼續執行,就必須儲存手機cpu一直處於執行狀態,綜合網上所查詢的資料,發現可以通過使用android的powermanager和powermanager.wakelock這兩個類來控制,具體關於這兩個類的使用可以參考:

下面來說一下我的gps定時定位主要思想:

1、要實現程式退出之後,仍然可以定時上傳定位資訊,必須採用service,service可以保持在後台一直執行,除非系統資源極其匱乏,否則一般來說service是不會被系統殺死的。

2、要實現定時上傳,因為android系統自帶的gps定位功能本身自帶就有迴圈定位的功能,所以直接利用此功能即可實現定時上傳了。

**如下所示:

/**

* 獲取gps位置資訊的service

* * @author king

* */

public class myservice extends service

@override

public void oncreate()

@override

public void onstart(intent intent, int startid)

/** * 實現乙個位置變化的***

*/private final locationlistener locationlistener = new locationlistener()

// 當位置資訊不可獲取時

@override

public void onproviderdisabled(string provider)

@override

public void onproviderenabled(string provider)

@override

public void onstatuschanged(string provider, int status, bundle extras)

};@override

public void ondestroy()

wakelock.release();

super.ondestroy();

}

如何保證執行緒安全?

執行緒安全 一般說來,確保執行緒安全的方法有這幾個 競爭與原子操作 同步與鎖 可重入 過度優化。競爭與原子操作 多個執行緒同時訪問和修改乙個資料,可能造成很嚴重的後果。出現嚴重後果的原因是很多操作被作業系統編譯為彙編 之後不止一條指令,因此在執行的時候可能執行了一半就被排程系統打斷了而去執行別的 了...

WIN XP 開機正常,過了進度條之後黑屏

三種情況 1.進入安全模式,右鍵 我的電腦 屬性 硬體 裝置管理器 檢視顯示卡驅動是否有問題 有無問號或者嘆號 如有就是驅動的問題,使用驅動人生或者驅動精靈解除安裝顯示卡驅動後重新更新安裝就可以了。2.顯示器不支援目前的解析度,如果之前曾經更新過顯示卡驅動或者把系統解析度調整到更高,顯示器無法支援改...

android如何保證service不被殺死

android開發的過程中,每次呼叫startservice intent 的時候,都會呼叫該service物件的onstartcommand intent,int,int 方法,然後在onstartcommand方法中做一些處理。從android官方文件中,我們知道onstartcommand有4...