169
京東網上商城
android優化之省電
Android程序中耗電最多的地方在以下幾個方麵 :1、 大數據量的傳輸。
2、 不停的在網絡間切換。
3、 解析大量的文本數據。
那麼我們怎麼樣來改善一下我們的程序呢?
1、 在需要網絡連接的程序中,首先檢查網絡連接是否正常,如果沒有網絡連接,那麼就不需要執行相應的程序。
檢查網絡連接的方法如下:
[*]ConnectivityManager mConnectivity;
[*]TelephonyManager mTelephony;
[*]……
[*]// 檢查網絡連接,如果無網絡可用,就不需要進行連網操作等
[*]NetworkInfo info = mConnectivity.getActiveNetworkInfo();
[*]if (info == null ||
[*] !mConnectivity.getBackgroundDataSetting()) {
[*] return false;
[*]}
[*]//判斷網絡連接類型,隻有在3G或wifi裏進行一些數據更新。
[*]int netType = info.getType();
[*]int netSubtype = info.getSubtype();
[*]if (netType == ConnectivityManager.TYPE_WIFI) {
[*] return info.isConnected();
[*]} else if (netType == ConnectivityManager.TYPE_MOBILE
[*] && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS
[*] && !mTelephony.isNetworkRoaming()) {
[*] return info.isConnected();
[*]} else {
[*] return false;
[*]}
[*]
很多人開發的程序後台都會一個service不停的去服務器上更新數據,在不更新數據的時候就讓它sleep,這種方式是非常耗電的,通常情況下,我們可以使用AlarmManager來定時啟動服務。如下所示,第30分鍾執行一次。
AlarmManager am = (AlarmManager) [*]
context.getSystemService(Context.ALARM_SERVICE);
[*]
Intent intent = new Intent(context, MyService.class);
[*]
PendingIntent pendingIntent =
[*]
PendingIntent.getService(context, 0, intent, 0);
[*]
long interval = DateUtils.MINUTE_IN_MILLIS * 30;
[*]
long firstWake = System.currentTimeMillis() + interval;
[*]
am.setRepeating(AlarmManager.RTC,firstWake, interval, pendingIntent);
[*]
最後一招,在運行你的程序前先檢查電量,電量太低,那麼就提示用戶充電之類的,使用方法:
[*]public void onCreate() {
[*] // Register for sticky broadcast and send default
[*] registerReceiver(mReceiver, mFilter);
[*] mHandler.sendEmptyMessageDelayed(MSG_BATT, 1000);
[*]}
[*]IntentFilter mFilter =
[*] new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
[*]BroadcastReceiver mReceiver = new BroadcastReceiver() {
[*] public void onReceive(Context context, Intent intent) {
[*] // Found sticky broadcast, so trigger update
[*] unregisterReceiver(mReceiver);
[*] mHandler.removeMessages(MSG_BATT);
[*] mHandler.obtainMessage(MSG_BATT, intent).sendToTarget();
[*] }
[*]};
xin.wu發表於 2012-2-21 12:50:14
我確實發現Android比較費電。有時間連一天都用不了。感謝樓主的分享xuemei發表於 2012-2-21 12:58:31
哇塞,很酷。搞一個放在手機裏,試一試:D火星人發表於 2012-2-21 13:18:19
嗚嗚,我手機是塞班的係統,樓主有沒有塞班省電的好方法啊?hong.li發表於 2012-2-21 13:18:57
太好了,我正為此發愁呢。樓主的帖子發得真及時。謝謝!yinhangdy發表於 2012-2-21 17:37:41
如果有節省流量的就更好了helloBYJ發表於 2012-2-22 14:22:15
本帖最後由 helloBYJ 於 2012-2-22 14:22 編輯節省流量的方法是斷開網絡,不上網;P
hey123發表於 2012-2-24 09:40:26
android手機省電技巧,該技巧通過本人實際測試,效果很不錯,貼出來和大家一塊分享。:)1:將手機的屏幕亮度調到最低限度。
2:將震動關閉,將來電模式設置為鈴聲。
3:平時不上網、不使用藍牙、不使用wifi時將這些功能都關閉,如果這些功能打開的話,它們會不停的搜索周圍的信號。還有將wifi中自動搜索周邊的wifi網絡也給關閉掉。
4:晚上睡覺時,可以講當前手機狀態模式,調成飛行模式或者關機。
5:最好能將自己的android手機的root權限給打開,將內置的一些不用的軟件給卸掉,因為它們會一直在後台跑著自己的服務,這樣也會很費電。
6:在平時自己使用某款軟件時,如果用完了,最好是能把它們給關閉退出來,不然這些軟件會一直在你手機的後台運行。
7:出差的途中為了讓手機更省電,可以將手機設成離線模式,這樣它就不會在換區域時不停的搜索信號。
8:平時再打電話時,最好在一個地方待會把話說完,如果不停的走動,手機的也會不停的搜索周圍的基站,並且還會增加信號忽強,忽弱時無線電波對你大腦的輻射。
9:需要大家注意的是:最好不要在公交、汽車,特別是地鐵上上網、打電話,這樣都會很耗電的。現在大部分地鐵站下邊都有網絡信號,可以通話畢竟信號還是不好。特別是上網時那耗電就特別快。
10:android手機的屏幕大,平時的服務多,都是多進程的服務。所以最好還是建議大家平時準備2塊電池,或者買一個便攜式mini電源,以防在沒電時可以及時的充電。
最後更新:2017-04-03 20:19:20