(1)後台執行需求
推送訊息/廣告
資料同步/檔案傳輸
使用者活動跟蹤、
定時任務/鬧鐘
內容提供者
(2)實現自動後台執行
stikcy service
@override
public
intonstartcommand(intent intent, int flags, int startid)
靜態註冊broadcastreceiver監聽系統級事件
(3)禁用無用元件
/**
* 監聽系統事件的receiver
*/public
class
autostartreceiver
extends
broadcastreceiver
/*** 在不需要乙個receiver時,可使用該介面disable掉,
* 這樣當匹配intentfilter的事件發生時,就不會再啟動該控制項了
*@param context
*/public
static
void
disable(context context)
@override
public
void
onreceive(context context, intent intent)
}
android:name=".autostartreceiver"
android:enabled="true"
android:exported="true">
android:name="android.intent.action.boot_completed"/>
android:name="android.intent.action.airplane_mode"/>
intent-filter>
receiver>
(4)定時任務
timer
handler.postdelayed
alarmmanager(使用硬體時鐘)
public
class
alarmreceiver
extends
broadcastreceiver
/*** 啟動乙個一次性鬧鐘
* 即使被kill掉也可以發生
*@param context
*/public
static
void
startonetimealarm(context context)
@override
public
void
onreceive(context context, intent intent)
}
(5)jobscheduler
對執行時機無需精確控制
需要特定情況滿足才執行
只能動態註冊
@targetapi(build.version_codes.lollipop)
public
class jobmanager
}
@targetapi(build.version_codes.lollipop)
public
class
testjobservice
extends
jobservice
@override
public
boolean
onstartjob(jobparameters params)
@override
public
boolean
onstopjob(jobparameters params)
}
android:name=".testjobservice"
android:enabled="true"
android:exported="true"
android:permission="android.permission.bind_job_service">
service>
(6)wakelock
private void backgroundtask() catch (interruptedexception e) finally
}
(7)監控電池狀態
public
class
batteryreceiver
extends
broadcastreceiver
@override
public
void
onreceive(context context, intent intent) else
if (intent.action_battery_okay.equals(action)) else
if (intent.action_battery_changed.equals(action)) }}
android:name=".batteryreceiver"
android:enabled="true"
android:exported="true">
receiver>
intentfilter filter = new intentfilter(intent.action_battery_changed);
filter.addaction(intent.action_battery_low);
filter.addaction(intent.action_battery_okay);
registerreceiver(receiver, filter);
(8)doze
6.0引入的打盹模式
jobs 顯示後台程式
作用 jobs命令顯示後台任務的執 況。用法 jobs 選項 jobspec 主要選項如下。l 長輸出用法,顯示全部內容。n 不輸出資訊。p 只輸出程序號。r 只輸出執行的程序。jobspec 表示後台任務號碼。應用例項如下。先把兩個程序放在系統後台執行,然後使用jobs命令檢視後台任務的執 況 d...
nohup後台執行 關閉後台程式
參考 在跑時間比較長的程式,或者列印資訊比較多,或者網路不穩定時,可以採用後台執行程式,然後把列印資訊儲存在檔案中,等程式結束後再檢查日誌,完成該功能可以用以下命令 1.nohup python3 u test.py test.log 2 1 2.回車 3.輸入exit命令退出終端 4.關閉shel...
ubuntu 前台程式和後台程式
以前知道了 命令後,經常使用她把程式從前台轉換到後台。後來突然想時候那個程式了,我不知所措了。本文與 ubuntu 前台程式和後台程式 這裡一般是命令後加乙個 命令即可。比如 1 31098 2 31570 輸入命令 jobs 後,發現我們的那個後台程式了。1 running pc2server 2...