讀后感-Android第一行代碼第二版(1)

前言

郭神出品,必屬精品,記得在剛做Android開發(fā)的時(shí)候,當(dāng)時(shí)買了Android第一行代碼第一版,看了之后感覺內(nèi)容通俗易懂,收獲頗多,當(dāng)時(shí)還不知道作者是郭神,后來在CSDN上看了很多他寫的文章,發(fā)現(xiàn)原來作者就是郭神,現(xiàn)在他出了第二版,果斷將書買了回來,書很早就看完了,今天將書籍翻了出來看了一下,決定將自己的想法給記錄一下.

第一章 開始啟程---你的第一行Android代碼

1.1 了解全貌------Android王國(guó)介紹

1.1.1 Android系統(tǒng)架構(gòu)

Android系統(tǒng)架構(gòu)大致可分為4層:

  1. Linux內(nèi)核層
  • Android系統(tǒng)是基于Linux內(nèi)核的,這一層主要為Android設(shè)備提供了底層的驅(qū)動(dòng),如, 顯示驅(qū)動(dòng),音頻驅(qū)動(dòng),照相機(jī)驅(qū)動(dòng),藍(lán)牙驅(qū)動(dòng),Wi-Fi驅(qū)動(dòng),電源管理等
  1. 系統(tǒng)運(yùn)行庫(kù)層
  • 這一層通過一些C/C++庫(kù)來為Android系統(tǒng)提供了主要的特性支持,如SQLite庫(kù)提供了數(shù)據(jù)庫(kù)的支持,OpenGL|ES庫(kù)提供了3D繪圖的支持,Webkit庫(kù)提供了瀏覽器內(nèi)核的支持等.
  • 同樣在這一層還有Android運(yùn)行時(shí)庫(kù),它主要提供了一些核心庫(kù),能夠允許開發(fā)者使用Java語言來編寫Android應(yīng)用.另外,Android運(yùn)行時(shí)庫(kù)中還包含了Dalvik虛擬機(jī)(5.0系統(tǒng)之后改為ART運(yùn)行環(huán)境),它使得每一個(gè) Android應(yīng)用都能運(yùn)行在獨(dú)立的進(jìn)程當(dāng)中,并且擁有自己的一個(gè)Dalvik虛擬機(jī)實(shí)例.相較于Java虛擬機(jī).Davik是專門為移動(dòng)設(shè)備定制的旬薯,它針對(duì)手機(jī)內(nèi)存,CPU性能有限等情況做了優(yōu)化處理.
  1. 應(yīng)用框架層
  • 這一層主要提供了構(gòu)建應(yīng)用程序時(shí)可能用到的各種API,Android自帶的一些核心應(yīng)用就是使用這些API完成的,開發(fā)者亦可以通過使用這些API來構(gòu)建自己的應(yīng)用程序.
  1. 應(yīng)用層
  • 所有安裝在手機(jī)世聯(lián)行的應(yīng)用程序都是屬于這一層的,比如系統(tǒng)自帶的聯(lián)系人,短信等程序,或者是你從Google Play上下載的小游戲,當(dāng)然還包括你自己開發(fā)的程序.

結(jié)合下圖你將會(huì)理解更加深刻


Android系統(tǒng)架構(gòu)
1.1.2 Android已發(fā)布的版本
  • Android操作系統(tǒng)是一個(gè)由Google開放手持設(shè)備聯(lián)盟共同開發(fā)發(fā)展的移動(dòng)設(shè)備操作系統(tǒng),其最早的一個(gè)版本Android 1.0 beta發(fā)布于2007年11月5日呕诉,至今已經(jīng)發(fā)布了多個(gè)更新鲸匿。這些更新版本都在前一個(gè)版本的基礎(chǔ)上修復(fù)了Bug并且添加了前一個(gè)版本所沒有的新功能会烙。
  • 從2009年5月開始,Android操作系統(tǒng)改用甜點(diǎn)來作為版本代號(hào)颂碘,這些版本按照從C大寫字母開始的順序來進(jìn)行命名:紙杯蛋糕(Cupcake)坯门、甜甜圈(Donut)棕洋、閃電泡芙(éclair)挡闰、凍酸奶(Froyo)、姜餅(Gingerbread)掰盘、蜂巢(Honeycomb)﹑冰淇淋三明治(Ice Cream Sandwich)摄悯、果凍豆(Jelly Bean)、奇巧(KitKat)庆杜、棒棒糖(Lollipop)射众、棉花糖(Marshmallow)碟摆、牛軋?zhí)牵∟ougat)晃财、奧利奧(Oreo)。
  • Android在正式發(fā)行之前典蜕,最開始擁有兩個(gè)內(nèi)部測(cè)試版本断盛,并且以著名的機(jī)器人名稱來對(duì)其進(jìn)行命名,它們分別是:鐵臂阿童木(Astro Boy愉舔,注意不是Astro阿童木)和發(fā)條機(jī)器人(Bender)钢猛。需要注意的是,Android 1.0和1.1的版本代號(hào)并不是這兩個(gè)轩缤,維基百科中的“Android Version History”詞條部分是錯(cuò)誤的命迈。 [3]
  • 后來由于涉及到版權(quán)問題,谷歌將其命名規(guī)則變更為用甜點(diǎn)作為它們系統(tǒng)版本的代號(hào)的命名方法火的。Android 1.0是于2008年9月23日正式發(fā)布的Android第一版壶愤,Android 1.1發(fā)布于2009年2月2日,但其實(shí)谷歌內(nèi)部有更多的1.1版的變種馏鹤。甜點(diǎn)命名法開始于第三版Android 1.5(實(shí)際上是第四版征椒,因?yàn)锳ndroid 1.0其實(shí)有兩版)。而從Android 1.6 Donut甜甜圈開始湃累,項(xiàng)目組才正式確定將Android開發(fā)代號(hào)首字母從“C”一直延續(xù)下去勃救。值得一提的是,Android 1.1 的內(nèi)部代號(hào)為 Petit Four 治力,但項(xiàng)目主管喜歡美味的點(diǎn)心蒙秒,最終結(jié)束了這種命名方式。

所以Astro BoyBender都是真實(shí)的宵统,但他們都是在超早期的里程碑版本中進(jìn)行的,完整的時(shí)間表是這樣的:

  • Android milestone builds (with Astro Boy and Bender floating around in here somewhere)

  • Android 1.0(沒有開發(fā)代號(hào))

  • Android 1.1 - Petit Four

  • Android 1.5 - Cupcake

  • Android 1.6 - Donut

  • Android 2.0/2.1 - éclair

  • Android 2.2 - Froyo

  • Android 2.3 - Gingerbread

  • Android 3.0/3.1/3.2 - Honeycomb

  • Android 4.0 - Ice Cream Sandwich

  • Android 4.1/4.2/4.3 - Jelly Bean

  • Android 4.4 - KitKat

  • Android 5.0/5.1 - Lollipop(Android L)

  • Android 6.0 - Marshmallow(Android M)

  • Android 7.0 -Nougat(Android N)

  • Android 8.0 -Oreo(Android O)

隨著版本的更迭晕讲,應(yīng)用程序編程接口(API)等級(jí)不斷發(fā)生。下面將目前為止所有API等級(jí)羅列出來,并與Android各版本一一對(duì)應(yīng)益兄。
API等級(jí)1:Android 1.0
API等級(jí)2:Android 1.1 Petit Four
API等級(jí)3:Android 1.5 Cupcake
API等級(jí)4:Android 1.6 Donut
API等級(jí)5:Android 2.0 éclair
API等級(jí)6:Android 2.0.1 éclair
API等級(jí)7:Android 2.1 éclair
API等級(jí)8:Android 2.2 - 2.2.3 Froyo
API等級(jí)9:Android 2.3 - 2.3.2 Gingerbread
API等級(jí)10:Android 2.3.3-2.3.7 Gingerbread
API等級(jí)11:Android 3.0 Honeycomb
API等級(jí)12:Android 3.1 Honeycomb
API等級(jí)13:Android 3.2 Honeycomb
API等級(jí)14:Android 4.0 - 4.0.2 Ice Cream Sandwich
API等級(jí)15:Android 4.0.3 - 4.0.4 Ice Cream Sandwich
API等級(jí)16:Android 4.1 Jelly Bean
API等級(jí)17:Android 4.2 Jelly Bean
API等級(jí)18:Android 4.3 Jelly Bean
API等級(jí)19:Android 4.4 KitKat
API等級(jí)20:Android 4.4W
API等級(jí)21:Android 5.0 Lollipop
API等級(jí)22:Android 5.1 Lollipop
API等級(jí)23:Android 6.0 Marshmallow
API等級(jí)24:Android 7.0 Nougat
API等級(jí)25:Android 7.1 Nougat
API等級(jí)26:Android 8.0 Oreo

1.1.3 Android應(yīng)用開發(fā)特色
  1. 四大組件
  • Android四大組件分別是活動(dòng)(Activity),服務(wù)(Service),廣播接收器(Broadcast Receiver)和內(nèi)容提供器(Content Provider).其中活動(dòng)是所有Android應(yīng)用程序的門面,凡是在應(yīng)用中你看得到的東西,都是放在活動(dòng)中的,而服務(wù)就比較低調(diào)了.你無法看到它,但它會(huì)一直在后臺(tái)默默地運(yùn)行,即使用戶退出了應(yīng)用,服務(wù)仍然可以繼續(xù)的運(yùn)行的.廣播接收器允許你的應(yīng)用接收來自各處的廣播消息,比如電話,短信等,當(dāng)然你的應(yīng)用同樣也可以向外發(fā)出廣播消息.內(nèi)容提供器則為應(yīng)用程序之間共享數(shù)據(jù)提供了可能,比如你想要讀取系統(tǒng)電話簿中的聯(lián)系人,就需要通過內(nèi)容提供器來實(shí)現(xiàn).
  1. 豐富的系統(tǒng)控件
  • Andriod系統(tǒng)為開發(fā)者提供了豐富的系統(tǒng)控件,使得我們可以很輕松地編寫出漂亮的界面.當(dāng)然如果你品位比較高,不滿足系統(tǒng)自帶的控件效果,也完全可以定制屬于自己的控件.
  1. SQLite數(shù)據(jù)庫(kù)
  • Android系統(tǒng)自帶了這種輕量級(jí),運(yùn)算速度極快的嵌入式關(guān)系型數(shù)據(jù)庫(kù), 它不僅支持標(biāo)準(zhǔn)的SQL語法,還可以通過Android封裝好的API進(jìn)行操作,讓存儲(chǔ)和讀取數(shù)據(jù)變得非常方便
  1. 強(qiáng)大的多媒體
  • Android系統(tǒng)還提供了豐富的多媒體服務(wù).如音樂,視頻,錄音,拍照,鬧鈴,等等,這一切你可以在程序中通過代碼進(jìn)行控制,讓你的應(yīng)用變得更加豐富多彩.
  1. 地理位置定位
    移動(dòng)設(shè)備和PC相比起來,地理位置定位功能應(yīng)該可以算是很大的一個(gè)亮點(diǎn),現(xiàn)在的Android手機(jī)都內(nèi)置了GPS,走到哪兒都可以定位自己的位置,發(fā)揮你的想象就可以做出創(chuàng)意十足的應(yīng)用,如果在結(jié)合功能強(qiáng)大的地圖功能,LBS這一領(lǐng)域潛力無限.

1.2 手把手帶你搭建開發(fā)環(huán)境

1.2.1 準(zhǔn)備所需要的工具
  • JDK
  • Android SDK
  • Android Studio
1.2.1 搭建開發(fā)環(huán)境
  • Android Studio的安裝過程

1.3 創(chuàng)建你的第一個(gè)Android項(xiàng)目

任何一個(gè)編程語言的第一個(gè)程序毫無疑問都會(huì)是Hello World,這已經(jīng)是20世紀(jì)70年代一直流傳下來的傳統(tǒng),在編程界已成為永恒的經(jīng)典.

1.3.1 創(chuàng)建HelloWorld項(xiàng)目
1.3.2 啟動(dòng)模擬器
1.3.3 運(yùn)行HelloWorld
1.3.4 分析你的第一個(gè)Android程序

這里我們將項(xiàng)目結(jié)構(gòu)模式切換成Project,這就是項(xiàng)目的真實(shí)目錄結(jié)構(gòu)


Project模式的項(xiàng)目結(jié)構(gòu)
  1. .gradle和.idea
    這兩個(gè)目錄下放置的都是Android Studio自動(dòng)生成的一些文件,我們無須關(guān)心,也不要去手動(dòng)編輯.
  2. app
    項(xiàng)目中的代碼,資源等內(nèi)容幾乎都是放置在這個(gè)目錄下的,我們后面的開發(fā)工作也基本都是在這個(gè)目錄下進(jìn)行的,待會(huì)兒還會(huì)對(duì)這個(gè)目錄單獨(dú)展開進(jìn)行講解.
  3. build
    它主要包含了一些編譯時(shí)自動(dòng)生成的文件
  4. gradle
    這個(gè)目錄下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前將gradle下載好,而是會(huì)自動(dòng)根據(jù)本地的緩存情況決定是否需要聯(lián)網(wǎng)下載gradle.Android Studio默認(rèn)沒有啟用gradle wrapper的方式,如果需要打開,可以點(diǎn)擊Android Studio導(dǎo)航欄-->File-->Settings-->Build,Execution,Deployment-->Gradle,進(jìn)行配置更改.
  5. .gitignore
    這個(gè)文件是用來將指定的文件排除在版本控制之外的.
  6. build.gradle
    這是項(xiàng)目全局的gradle構(gòu)建腳本,通常這個(gè)文件中的內(nèi)容是不需要修改的.
  7. gradle.properties
    這個(gè)文件是全局的gradle配置文件, 在這里配置的屬性將會(huì)影響到項(xiàng)目中所有的gradle編譯腳本.
    8, gradlew和gradlew.bat
    這兩個(gè)文件是用來命令行界面中執(zhí)行g(shù)radle命令的,其中g(shù)radlew是在Linux或Mac系統(tǒng)中使用的,gradlew.bat是在Windows中使用的.
  8. HelloWorld.iml
    img文件是所有IntelliJ IDEA項(xiàng)目都會(huì)自動(dòng)生成的一個(gè)文件(Android Studio是基于IntelliJ IDEA開發(fā)的),用于標(biāo)識(shí)這是一個(gè)IntelliJ IDEA項(xiàng)目,我們不需要修改這個(gè)文件中的任何內(nèi)容.
  9. local.properties
    這個(gè)文件用于指定Android SDK路徑,通常內(nèi)容都是自動(dòng)生成的,我們并不需要修改,除非你本機(jī)中的Android SDK位置發(fā)生了變化 ,那么就將這個(gè)文件中的路徑改成新的位置即可.
  10. settings.gradle
    這個(gè)文件用于指定項(xiàng)目中所有引入的模塊,由于HelloWorld項(xiàng)目中就只有一個(gè)app模塊,因此這個(gè)文件中也就只引入了一個(gè)模塊,通常情況下模塊的引入都是自動(dòng)完成的,需要我們手動(dòng)去修改這個(gè)文件的場(chǎng)景可能表較少

app目錄, 如圖:


app目錄下的結(jié)構(gòu)

那么下面我們就來對(duì)app目錄下的內(nèi)容進(jìn)行更為詳細(xì)的分析

  1. build
    這個(gè)目錄和 外層的build目錄類似,主要也是包含了一些在編譯時(shí)自動(dòng)生成的文件,不過它里面的內(nèi)容更多更雜,我們不需要過多關(guān)心
  2. libs
    如果你的項(xiàng)目中使用到了第三方j(luò)ar包,就需要把這些jar包都放在libs目錄下,放在這個(gè)目錄下的jar包都會(huì)被自動(dòng)添加到構(gòu)建路徑里去
  3. androidTest
    此處是用來編寫Android Test測(cè)試用例的.可以對(duì)項(xiàng)目進(jìn)行一些自動(dòng)化測(cè)試
  4. java
    毫無疑問,java目錄是放置我們所有Java代碼的地方,展開該目錄,你將看到我們剛才創(chuàng)建的HelloWorldActivity文件就在里面
  5. res
    項(xiàng)目中使用到的所有圖片,布局,字符串等資源都要存放在這個(gè)目錄下.當(dāng)然這個(gè)目錄下還有很多子目錄,圖片放在drawable目錄下,布局放在layout目錄下,字符串放在values目錄下,所以你不用擔(dān)心會(huì)把整個(gè)res目錄弄得亂糟糟的.
    6, Androidmanifest.xml
    這是你整個(gè)Android項(xiàng)目的配置文件,你在程序中定義的四大組件都需要在這個(gè)文件里注冊(cè),另外還可以在這個(gè)文件中給應(yīng)用添加權(quán)限聲明,由于這個(gè)文件以后會(huì)進(jìn)場(chǎng)用到,我們用到的時(shí)候再做詳細(xì)說明.
  6. test
    此處是用來編寫Unit Test測(cè)試用例的. 是對(duì)項(xiàng)目進(jìn)行自動(dòng)化測(cè)試的另一種方式.
  7. .gitigmore
    這個(gè)文件用于將app模塊內(nèi)的指定的目錄或文件排除在版本控制之外,作用和外層的.gitignore文件類似
  8. app.iml
    IntelliJ IDEA項(xiàng)目自動(dòng)生成的文件, 我們不需要關(guān)心或修改這個(gè)文件中的內(nèi)容
  9. build.gradle
    這是app模塊的gradle構(gòu)建腳本,這個(gè)文件中會(huì)指定很多項(xiàng)目構(gòu)建相關(guān)的配置,我們稍后將會(huì)詳細(xì)分析gradle構(gòu)建腳本中的具體內(nèi)容
  10. proguard-rules.pro
    這個(gè)文件用于指定項(xiàng)目代碼的混淆規(guī)則,當(dāng)代碼開發(fā)完成后打成安裝包文件,如果不希望代碼被別人破解,通常會(huì)將代碼進(jìn)行混淆,從而讓破解者難以閱讀.
1.3.5 詳解項(xiàng)目中的資源
res目錄下的結(jié)構(gòu)
  1. 所有以drawable開頭的文件夾都是用來放圖片的,所有以mipmap開頭的文件夾都是用來放應(yīng)用圖標(biāo)的,所有以values開頭的文件夾都是用來放字符串锻梳,樣式,顏色等配置的,layout文件夾是用來放布局文件的.

  2. 之所以這么多mipmap開頭的文件夾,其實(shí)主要是為了讓程序能夠更好地兼容各種設(shè)備.drawable文件夾也是同樣的道理

  3. drawable-v24和mipmap-anydpi-v26是為了適配Android8.0系統(tǒng)應(yīng)用圖標(biāo)而自動(dòng)生成的

  4. 打開values/string.xml,內(nèi)容如下

     <resources>
     <string name="app_name">HelloWorld</string>
     </resources>
    

可以看到, 這里定義了一個(gè)應(yīng)用程序名的字符串,我們有以下兩種方式來引用它.

  • 在代碼中通過R.string.app_name可以獲得該字符串的引用.
  • 在XML中通過@string/app_name可以獲得該字符串的引用.
  1. 打開AndroidManifest.xml文件,找到如下代碼:

     <application
     android:allowBackup="true"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:roundIcon="@mipmap/ic_launcher_round"
     android:supportsRtl="true"
     android:theme="@style/AppTheme">
    
     </application>
    

其中,HelloWorld項(xiàng)目的應(yīng)用圖標(biāo)就是通過android:icon屬性來指定的,應(yīng)用的名稱則是通過android:label屬性指定的.可以看到,這里對(duì)資源引用的方式正式我們剛剛學(xué)過的在XML中引用資源的語法.

1.3.6 詳解build.gradle文件
  1. 先來看下外層目錄下build.gradle文件,代碼如下所示:

    buildscript {
     repositories {
     google()
     jcenter()
     }
     dependencies {
     classpath 'com.android.tools.build:gradle:3.0.1'
     
     // NOTE: Do not place your application dependencies here; they belong
     // in the individual module build.gradle files
     }
     }
     allprojects {
     repositories {
     google()
     jcenter()
     }
     }
    
     task clean(type: Delete) {
     delete rootProject.buildDir
     }
    
  • repositories的閉包中都聲明了 google(),jcenter()這兩個(gè)配置,那么這個(gè)jcenter和google是什么意思呢?其實(shí)它們是一個(gè)代碼托管倉(cāng)庫(kù),很多Android開源項(xiàng)目選擇將代碼托管到j(luò)center和google上,聲明了這些配置后,我們就可以在項(xiàng)目中引用任何jcenter和google上的開源項(xiàng)目了.
  • dependencies閉包中使用Classpath聲明了一個(gè)Gradle插件,為什么要聲明這個(gè)插件呢?因?yàn)镚radle并不是在專門為構(gòu)建Android項(xiàng)目而開發(fā)的,Java,C++等很多中項(xiàng)目都可以使用Gradle來構(gòu)建,因此如果要構(gòu)建Android項(xiàng)目,則需要聲明 classpath 'com.android.tools.build:gradle:3.0.1'這個(gè)插件,其中,最后面的部分是版本號(hào).
  1. app目錄下的build.gradle文件

     apply plugin: 'com.android.application'
    
     android {
     compileSdkVersion 26
     defaultConfig {
     applicationId "com.dream.helloworld"
     minSdkVersion 19
     targetSdkVersion 26
     versionCode 1
     versionName "1.0"
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {
     release {
         minifyEnabled false
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
     }
     }
     }
    
     dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     implementation 'com.android.support:appcompat-v7:26.1.0'
     implementation 'com.android.support.constraint:constraint-layout:1.1.0'
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
     }
    
  • 這個(gè)文件中的內(nèi)容相對(duì)復(fù)雜一些,com.android.application表示這是一個(gè)應(yīng)用程序模塊,com.android.library表示這是一個(gè)庫(kù).
  • android閉包,compileSdkVersion用于指定項(xiàng)目的編譯版本
  • defaultConfig閉包,applicationId用于指定項(xiàng)目的包名,minSdkVersion用于指定項(xiàng)目最低兼容的Android系統(tǒng)版本,targetSdkVersion指定的值表示你在改在該目標(biāo)版本上已經(jīng)做過了充分的測(cè)試,versionCode用于指定版本號(hào),versionName用戶指定版本名稱
  • buildTypes閉包,用于指定生成安裝文件的相關(guān)配置,通常會(huì)有兩個(gè)子閉包,一個(gè)是debug,一個(gè)是release,debug閉包是可以忽略不寫的,因此上面的代碼中只有一個(gè)release閉包.minifyEnabled用于是否開啟混淆,為true表示開啟混淆,為false表示不混淆.
  • dependencies閉包,這個(gè)閉包功能非常強(qiáng)大,它可以指定當(dāng)前項(xiàng)目所有的依賴關(guān)系,通常Android Studio項(xiàng)目一共有3中依賴方式:本地依賴,庫(kù)依賴,遠(yuǎn)程依賴.第一行的 implementation fileTree(dir: 'libs', include: ['*.jar'])就是一個(gè)本地依賴,而第二行的 implementation 'com.android.support:appcompat-v7:26.1.0'就是一個(gè)遠(yuǎn)程依賴,像compile project這種的就是庫(kù)依賴.testImplementation 'junit:junit:4.12'是用來聲明測(cè)試用例庫(kù)的.

1.4 前行必備------掌握日志工具的使用

  • Log.v(); 對(duì)應(yīng)級(jí)別verbose,是Android日志里面級(jí)別最低的那一種
  • Log.d(); 對(duì)應(yīng)級(jí)別debug,比verbose高一級(jí)
  • Log.i(); 對(duì)應(yīng)級(jí)別info,比debug高一級(jí)
  • Log.w();對(duì)應(yīng)級(jí)別warn,比info高一級(jí)
  • Log.e(); 對(duì)應(yīng)級(jí)別error,比warn高一級(jí)

logcat中還能使用和添加過濾器

1.5 小結(jié)

以上就是Android第一行代碼第一章的全部?jī)?nèi)容,書中寫的比較細(xì)致,很全面,同時(shí)收貨也很多.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市净捅,隨后出現(xiàn)的幾起案子疑枯,更是在濱河造成了極大的恐慌,老刑警劉巖蛔六,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荆永,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡国章,警方通過查閱死者的電腦和手機(jī)具钥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來液兽,“玉大人骂删,你說我怎么就攤上這事∷膯” “怎么了宁玫?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)柑晒。 經(jīng)常有香客問我欧瘪,道長(zhǎng),這世上最難降的妖魔是什么匙赞? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任佛掖,我火速辦了婚禮,結(jié)果婚禮上涌庭,老公的妹妹穿的比我還像新娘芥被。我一直安慰自己,他們只是感情好脾猛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布撕彤。 她就那樣靜靜地躺著,像睡著了一般猛拴。 火紅的嫁衣襯著肌膚如雪羹铅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天愉昆,我揣著相機(jī)與錄音职员,去河邊找鬼。 笑死跛溉,一個(gè)胖子當(dāng)著我的面吹牛焊切,可吹牛的內(nèi)容都是我干的扮授。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼专肪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼刹勃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚎尤,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤荔仁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芽死,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乏梁,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年关贵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遇骑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揖曾,死狀恐怖落萎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翩肌,我是刑警寧澤模暗,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站念祭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碍侦。R本人自食惡果不足惜粱坤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷产。 院中可真熱鬧站玄,春花似錦、人聲如沸濒旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尔邓。三九已至晾剖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梯嗽,已是汗流浹背齿尽。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灯节,地道東北人循头。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓绵估,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親卡骂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子国裳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355