日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 启动service报错,Android小经验

發(fā)布時間:2023/12/19 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 启动service报错,Android小经验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404388098&idx=1&sn=8bbbba7692dca68cdda2212dec4d86c0&scene=21#wechat_redirect

今天是馮建同學(xué)投稿,總結(jié)他在Android開發(fā)方面的各種小經(jīng)驗,我覺得非常有意義,所謂經(jīng)驗豐富有時候是指積累的這些小經(jīng)驗非常多,他這篇分享相信會幫助到一些朋友。我也曾推薦過他的?APK魔鬼瘦身

一文,沒看過的朋友也可以再去看看。

做Android久了,就會踩很多坑,被坑得多了就有經(jīng)驗了,閑暇之余整理了部分,現(xiàn)挑選一些重要或者偏門的“小”經(jīng)驗做個記錄。

查看SQLite日志

因為實現(xiàn)里用了Log.isLoggable(TAG, Log.VERBOSE)做了判斷,在LessCode的LogLess中也參考了這種機(jī)制:https://github.com/openproject/LessCode/blob/master/lesscode-core/src/main/java/com/jayfeng/lesscode/core/LogLess.java

使用這種方法就可以在Release版本也能做到查看應(yīng)用的打印日志了。

PNG優(yōu)化

APK打包會自動對PNG進(jìn)行無損壓縮,如果自行無損壓縮是無效的。

當(dāng)然進(jìn)行有損壓縮是可以的:https://tinypng.com/

Tcpdump抓包

有些模擬器比如genymotion自帶了tcpdump,如果沒有的話,需要下載tcpdump:

http://www.strazzere.com/android/tcpdump

把tcpdump push到/data/local下,抓包命令:

查看簽名

很多開發(fā)者服務(wù)都需要綁定簽名信息,用下面的命令可以查看簽名:

注意,這個是需要密碼的,可以查看MD5, SHA1,SHA256等等。

單例模式(懶漢式)的最佳寫法

特別說到這個問題,是因為網(wǎng)上很多這樣的代碼:

這種寫法線程不安全,改進(jìn)一下,加一個同步鎖:

網(wǎng)上這樣的代碼更多,可以很好的工作,但是缺點是效率低。

實際上,早在JDK1.5就引入volatile關(guān)鍵字,所以又有了一種更好的雙重校驗鎖寫法:

這才是最佳寫法!!!

不是說第二種寫法有問題,或者在Android中一定要用第三種寫法,只是告訴大家一種更好的寫法。

多進(jìn)程Application

是不是經(jīng)常發(fā)現(xiàn)Application里的方法執(zhí)行了多次?百思不得其解。

因為當(dāng)有多個進(jìn)程的時候,Application會執(zhí)行多次,可以通過pid來判斷那些方法只執(zhí)行一次,避免浪費資源。

隱式啟動Service

這是Android5.0的一個改動,不支持隱式的Service調(diào)用。下面的代碼在Android 5.0+上會報錯:Service Intent must be explicit:

可改成如下:

fill_parent的壽命

在Android2.2之后,支持使用match_parent。你的布局文件里是不是既有fill_parent和match_parent顯得很亂?

如果你現(xiàn)在的minSdkVersion是8+的話,就可以忽略fill_parent,統(tǒng)一使用match_parent了,否則請使用fill_parent。

ListView的局部刷新

有的列表可能notifyDataSetChanged()代價有點高,最好能局部刷新。

局部刷新的重點是,找到要更新的那項的View,然后再根據(jù)業(yè)務(wù)邏輯更新數(shù)據(jù)即可。

強(qiáng)調(diào)一下,最后那個列表數(shù)據(jù)別忘記更新, 不然數(shù)據(jù)源不變,一滾動可能又還原了。

系統(tǒng)日志中幾個重要的TAG

一行居中,多行居左的TextView

這個一般用于提示信息對話框,如果文字是一行就居中,多行就居左。

在TextView外套一層wrap_content的ViewGroup即可簡單實現(xiàn):

setCompoundDrawablesWithIntrinsicBounds()

網(wǎng)上一大堆setCompoundDrawables()方法無效不顯示的問題,然后解決方法是setBounds,需要計算大小…

不用這么麻煩,用setCompoundDrawablesWithIntrinsicBounds()這個方法最簡單!

計算程序運行時間

為了計算一段代碼運行時間,一般的做法是,在代碼的前面加個startTime,在代碼的后面把當(dāng)前時間減去startTime,這個時間差就是運行時間。

這里提供一種寫起來更方便的方法,完全無時間邏輯,只是加一個打印log就夠了。

沒有計算時間的邏輯,這能測出來?

把日志過濾出來,運行命令“adb logcat -v time | grep TAG”:

通過-v time參數(shù),可以比較日志左邊的時間來算出中間的代碼運行的時間。

Java引用類型一覽表

Context使用場景

為了防止Activity,Service等這樣的Context泄漏于一些生命周期更長的對象,可以使用生命周期更長的ApplicationContext,但是不是所有的Context的都能替換為ApplicationContext

這是網(wǎng)上流傳的一份表格:

圖片緩存大小

現(xiàn)在很多圖片庫需要給圖片設(shè)置一個最大緩存,但是這個值設(shè)置多少合適呢?

高端機(jī)和低端機(jī)的配置顯然應(yīng)該不同,可以考慮設(shè)置一個動態(tài)值。

建議設(shè)置為應(yīng)用可用內(nèi)存的1/8:

系統(tǒng)內(nèi)置的一些工具類

在AOSP源碼全局搜了一下包含Util關(guān)鍵字的類,整理出這個列表供大家參考:

這么多工具類,一定可以找到對你有用的。

ClipPadding

這個不多說,ListView的ClipPadding設(shè)為false,就能為ListView設(shè)置各種padding而不會出現(xiàn)丑陋的滑動“禁區(qū)”了。

強(qiáng)大的dumpsys

dumpsys可以查看系統(tǒng)服務(wù)和狀態(tài),非常強(qiáng)大,可通過如下查看所有支持的子命令:

這里列舉幾個稍微常用的:

bugreport命令

很多人都用過adb logcat,但是如果想要更詳細(xì)的信息,logcat則無能為力。

所以大多數(shù)手機(jī)廠商測試更多的是用adb bugreport來抓log給開發(fā)人員分析。

dpi文件夾的換算比例

更新媒體庫文件

以前做ROM的時候經(jīng)常碰到一些第三方軟件(某音樂APP)下載了新文件或刪除文件之后,但是媒體庫并沒有更新,因為這個是需要第三方軟件主動觸發(fā)。

媒體庫會在手機(jī)啟動,SD卡插拔的情況下進(jìn)行全盤掃描,不是實時的而且代價比較大,所以單個文件的刷新很有必要。

Monkey參數(shù)

大家都知道,跑monkey的參數(shù)設(shè)置有一些要注意的地方,比如太快了不行不切實際,太慢了也不行等等,這里給出一個參考:

一邊跑monkey,一遍抓log吧。

小結(jié)

無論是大經(jīng)驗還是小經(jīng)驗,都是好經(jīng)驗,關(guān)鍵時候出奇效。

原文:http://blog.csdn.net/zhouli_csdn/article/details/50978336

總結(jié)

以上是生活随笔為你收集整理的android 启动service报错,Android小经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。