嗨,即時通訊開發一個Android應用程序,我想知道如何使應用程序使用較少的CPU,而後臺。例如,我的應用程序暫停一次,當你暫停和恢復它只是改變了暫停可變正確的多任務處理android
1
A
回答
2
IMO它失去焦點,但CPU使用率仍然是50%
編輯
while (!pause) {
Canvas c = null;
try {
c = sHolder.lockCanvas(null);
synchronized (sHolder) {
doDraw(c);
powerUps();
}
} finally {
if (c != null) {
sHolder.unlockCanvasAndPost(c);
}
}
}
然後,你應該當您的應用暫停時,不會循環。
請參閱this page瞭解有關android應用程序「正確」生命週期的更多詳細信息。
另請注意,任何繁忙的循環設計您的應用程序將使用100%的CPU - 我不確定從onResume()
方法開始循環是否正確;我的直覺是通過對Handler.post()
的調用啓動一個單獨的調用來執行循環的每次迭代,最後一條語句重新發佈下一個調用。否則,應用程序的主線程將被禁止,對吧?
也許是這樣的:
void iterate() {
Canvas c = null;
try {
c = sHolder.lockCanvas(null);
synchronized (sHolder) {
doDraw(c);
powerUps();
}
} finally {
if (c != null) {
sHolder.unlockCanvasAndPost(c);
}
}
this.handler.post(this.iterateRunnable);
}
void onResume() {
this.handler = new Handler();
this.iterateRunnable = new Runnable() {
@Override public void run() { iterate(); }
};
this.handler.post(this.iterateRunnable);
}
相關問題
- 1. Android多任務處理問題
- 2. Android:如何處理多個任務
- 3. Android ==>禁用多任務處理?
- 4. MPMediaPlayer的多任務處理
- 5. Android:正確處理多個通知
- 6. MSBuild任務批處理多個任務
- 7. python多處理不處理任務
- 8. iphone 3G多任務處理?
- 9. Android WebView:Tel:Geo:Mailto:正確處理
- 10. Android正確清理/處置
- 11. CakePHP和Facebook PHP SDK:處理任務的正確方法?
- 12. 同步處理資料任務的Android
- 13. 處理UI的Android異步任務
- 14. iphone中的多任務處理?
- 15. PIC24中的多任務處理
- 16. iPhone 3G的多任務處理?
- 17. iOS中的NSURLConnection和多任務處理
- 18. iPhone中的多任務處理
- 19. 處理多個文件的Ant任務
- 20. 處理許多任務,多次與任務並行
- 21. Android:處理活動的正確方法
- 22. Android中的多任務事件處理程序,如iOS中的
- 23. Android的活動回棧和多任務處理的支持
- 24. SpriteKit-多任務的正確方法
- 25. 如何正確處理一次性任務結果?
- 26. 如何正確處理異步任務結束?
- 27. 與iPhone多任務處理sqlite3 - 我需要正確關閉數據庫嗎?
- 28. 正確處理Android服務的重新啓動
- 29. 如何確定設備是否支持多任務處理?
- 30. 異步任務和處理程序Android
這聽起來像你有一個忙等待那的紡絲箱體和吃的CPU。 – JesusFreke
我們可以在暫停時看到你正在做什麼的代碼嗎? – momo
編輯我的評論 – MikeT