1、為避免 ListView 在使用過(guò)程中消耗過(guò)多的內(nèi)存,需要對(duì) Listview 進(jìn)行優(yōu)化,常用的優(yōu)化方案是對(duì)加載好的布局進(jìn)行緩存、創(chuàng)建 ViewHolder 類對(duì)控件實(shí)例進(jìn)行緩存
2、Activity 之間交換數(shù)據(jù),可以根據(jù)活動(dòng)的生命周期用 Intent 傳值
3、上一個(gè) Activity 需要更新數(shù)據(jù)庫(kù)相關(guān)數(shù)據(jù),蠢方法之一,在跳轉(zhuǎn)到第二個(gè) Activity 之前直接調(diào)用 finish() 方法,第二個(gè)活動(dòng)做了相關(guān)操作返回來(lái)時(shí)用 Intent 重新跳轉(zhuǎn)到第一個(gè) Activity,這里利用 onCreate() 相關(guān)特性
4、文字的尺寸用 sp ,非文字的尺寸用dp
5、善用 LinearLayout 包裹 RelativeLayout 布局
6、使用到相關(guān)權(quán)限時(shí),例如網(wǎng)絡(luò),到 AndroidManifest.xml 文件注冊(cè)相關(guān)內(nèi)容
7、網(wǎng)絡(luò)相關(guān)操作放到子線程,子線程中,網(wǎng)絡(luò)返回的結(jié)果調(diào)用 UiThread 切回主線程更新 UI
8、android 中用到 socket,創(chuàng)建實(shí)例的方法:
方法一 | 方法二 |
---|---|
Socket socket = new Socket("192.168.0.104", 7120); | Socket socket = new Socket(); |
SocketAddress socAddress = new InetSocketAddress("192.168.0.104", 7120); | |
socket.connect(socAddress, 2000); |
方法二可以設(shè)置 timeout 參數(shù)
9、按鈕是否可點(diǎn)擊屬性為 enabled ,clickable 屬性無(wú)反應(yīng)
10、java 中提取一個(gè)字符串的子串方法為 substring(0,3),實(shí)則取到下標(biāo)為 0,1,2 三個(gè)字符
11、visibility 與 gone,前者設(shè)置為控件不可見,但是占位置;后者設(shè)置為控件不可見,且不占用位置
12、獲取字符串長(zhǎng)度為 text.length()