1. 程式人生 > >《第一行代碼》讀書筆記

《第一行代碼》讀書筆記

release 結果 基本類 stat efi err name 存在 center

一:

1:項目文件

開發中經常用到的有:

app目錄:存放項目代碼、資源文件

build.gradle:項目全局gradle腳本。

2:app目錄

libs:放到libs目錄下的第三方jar包會自動添加到項目構建路徑。

java:存放java代碼的地方。

res:資源文件目錄,包括:圖片、布局、字符串、顏色、樣式、菜單等。

AndroidManifest.xml:項目配置文件。多用於註冊四大組、添加權限等。

proguard-rules.pro:項目代碼混淆規則。

3:build.gradle逐項解析

apply plugin: ‘com.android.application‘//說明module的類型,com.android.application為程序,com.android.library為庫
android { compileSdkVersion 22//編譯的SDK版本 buildToolsVersion "22.0.1"//編譯的Tools版本 defaultConfig {//默認配置 applicationId "com.nd.famlink"//應用程序的包名 minSdkVersion 8//支持的最低版本 targetSdkVersion 19//支持的目標版本 versionCode 52//版本號 versionName "3.0.1"//版本名 } sourceSets {//目錄指向配置
main { manifest.srcFile ‘AndroidManifest.xml‘//指定AndroidManifest文件 java.srcDirs = [‘src‘]//指定source目錄 resources.srcDirs = [‘src‘]//指定source目錄 aidl.srcDirs = [‘src‘]//指定source目錄 renderscript.srcDirs = [‘src‘]//指定source目錄 res.srcDirs = [‘res‘]//
指定資源目錄 assets.srcDirs = [‘assets‘]//指定assets目錄 jniLibs.srcDirs = [‘libs‘]//指定lib庫目錄 } debug.setRoot(‘build-types/debug‘)//指定debug模式的路徑 release.setRoot(‘build-types/release‘)//指定release模式的路徑 } signingConfigs {//簽名配置 release {//發布版簽名配置 storeFile file("fk.keystore")//密鑰文件路徑 storePassword "123"//密鑰文件密碼 keyAlias "fk"//key別名 keyPassword "123"//key密碼 } debug {//debug版簽名配置 storeFile file("fk.keystore") storePassword "123" keyAlias "fk" keyPassword "123" } } buildTypes {//build類型 release {//發布 minifyEnabled true//混淆開啟 proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-project.txt‘//指定混淆規則文件 signingConfig signingConfigs.release//設置簽名信息 } debug {//調試 signingConfig signingConfigs.release } } packagingOptions { exclude ‘META-INF/ASL2.0‘ exclude ‘META-INF/LICENSE‘ exclude ‘META-INF/NOTICE‘ exclude ‘META-INF/MANIFEST.MF‘ } lintOptions { abortOnError false//lint時候終止錯誤上報,防止編譯的時候莫名的失敗 } } dependencies { compile fileTree(dir: ‘libs‘, exclude: [‘android-support*.jar‘], include: [‘*.jar‘]) //編譯lib目錄下的.jar文件 compile project(‘:Easylink‘)//編譯附加的項目 compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.3‘//編譯來自Jcenter的第三方開源庫 }

4:菜單

菜單有多種:optionMenu、上下文菜單、彈出菜單等。

菜單可以在代碼中動態添加,也可以在xml中定義好菜單項,在代碼中加載。

菜單可以分組管理菜單項,也可以擁有子菜單。

5:Intent

Intent可以用於啟動四大組件,可以攜帶數據,不過只能通過鍵值對的形式攜帶基本類型數據。

Intent有兩種:顯式Intent和隱式Intent。

隱式Intent通過添加action、category、data等附加內容,來匹配系統中符合要求(註冊時配置 intent-filter)的活動、服務等。

6:返回數據的跳轉

啟動另一個活動可以有兩種方法,其中startActivityForResult(intent,請求碼)啟動的跳轉,可以在活動中重寫回調方法onActivityResult(請求碼,結果碼,intent)來獲取返回數據,通過請求碼匹配具體請求的返回、通過結果碼判斷結果的類型,通過intent提取返回的數據。

7:保存Activity中的數據

活動跳轉後,之前的活動可能會被回收,若想保存之前的活動的數據,使得返回這個活動時數據仍在,可以在活動中重寫 onSaveInstanceState(bundle)回調方法,這個方法會在活動被回收之前調用,把數據存在budle中,那麽下一次該活動重建時,可以在onCreate(bundle)中通過bundle取回數據。

8:精確定位活動

可以定義一個BaseActivity,繼承自AppCompatActivity,然後定義一些通用的方法、操作,如:打印當前活動信息。

另其他活動繼承BaseActivity,即可在項目運行時知道哪個頁面對應哪個活動了。

9:批量管理活動

可以定義一個工具類,其中維護一個活動list。

同上面,在BaseActivity中重寫onCreate方法,每當創建一個活動就通過工具類的景泰方法把活動添加到list中去。

那麽工具類中其他方法就可以通過list批量操作活動了,例如:批量打印活動信息、批量結束活動等。

二:

《第一行代碼》讀書筆記