App啟動(dòng)過程

啟動(dòng)過程概述

  • Launcher 接收到點(diǎn)擊事件湘捎,獲取應(yīng)用信息,向ActivityManagerService(AMS)發(fā)起啟動(dòng)應(yīng)用的請(qǐng)求(例子中啟動(dòng)calculator計(jì)算器)
  • AMS請(qǐng)求Launcher Pause(Launcher保存狀態(tài)進(jìn)入后臺(tái))
  • Launcher Pause榆骚,并向AMS發(fā)送Pause完畢的請(qǐng)求
  • AMS向Zygote進(jìn)程請(qǐng)求啟動(dòng)一個(gè)新進(jìn)程(calculator)(Note:通過Socket的方式)
  • Zygote fork出新進(jìn)程(calculator)登淘,在新進(jìn)程中執(zhí)行ActivityThread類的main方法
  • calculator想AMS請(qǐng)求attach到AMS
  • AMS請(qǐng)求calculator lauch
  • calculator調(diào)用onCreate,onResume方法
App啟動(dòng)流程圖

代碼調(diào)用分析

Launcher 接收到點(diǎn)擊事件向AMS發(fā)起啟動(dòng)應(yīng)用的請(qǐng)求

ActivityManagerProxy.java的startActivity 函數(shù)打印的調(diào)用棧:

07-29 07:06:11.691  6231  6231 D zhibinw : java.lang.RuntimeException: ActivityManagerProxy-startActivity
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2409)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1496)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.app.Activity.startActivityForResult(Activity.java:3788)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.app.Activity.startActivity(Activity.java:4055)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.startActivity(Launcher.java:3314)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.startActivitySafely(Launcher.java:3338)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.startAppShortcutOrInfoActivity(Launcher.java:3108)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.onClickAppShortcut(Launcher.java:3067)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.onClick(Launcher.java:2895)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.view.View.performClick(View.java:4781)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.view.View$PerformClick.run(View.java:19874)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.os.Handler.handleCallback(Handler.java:739)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.os.Handler.dispatchMessage(Handler.java:95)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.os.Looper.loop(Looper.java:135)
07-29 07:06:11.691  6231  6231 D zhibinw :  at android.app.ActivityThread.main(ActivityThread.java:5258)
07-29 07:06:11.691  6231  6231 D zhibinw :  at java.lang.reflect.Method.invoke(Native Method)
07-29 07:06:11.691  6231  6231 D zhibinw :  at java.lang.reflect.Method.invoke(Method.java:372)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
07-29 07:06:11.691  6231  6231 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
  • Launcher進(jìn)程啟動(dòng)的調(diào)用棧:
    ZygoteInit.main -> ActivityThread.main -> Looper.loop(進(jìn)入消息循環(huán))
  • 消息循環(huán)中收到系統(tǒng)分發(fā)過來(lái)的消息旺垒,回調(diào)onClick方法彩库,調(diào)用startActivity方法
  • 通過ActivityManagerProxy代理對(duì)象將請(qǐng)求發(fā)送給AMS
AMS請(qǐng)求Launcher Pause

ApplicationThreadProxy 的 schedulePauseActivity 函數(shù)打印的調(diào)用棧:

07-29 07:06:11.922  4151  4183 D zhibinw : java.lang.RuntimeException: ApplicationThreadProxy-schedulePauseActivity
07-29 07:06:11.922  4151  4183 D zhibinw :  at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:699)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:842)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.pauseBackStacks(ActivityStackSupervisor.java:680)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:1638)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1477)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.resumeTopActivitiesLocked(ActivityStackSupervisor.java:2520)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:2125)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.startActivityUncheckedLocked(ActivityStackSupervisor.java:2258)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1560)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:994)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3415)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3402)
07-29 07:06:11.922  4151  4183 D zhibinw :  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140)
07-29 07:06:11.922  4151  4183 D zhibinw :  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2223)
07-29 07:06:11.922  4151  4183 D zhibinw :  at android.os.Binder.execTransact(Binder.java:446)

在一系列調(diào)用之后,AMS進(jìn)程向Launcher發(fā)送pause的請(qǐng)求先蒋,同樣通過IPC骇钦。
在onPause方法中查看調(diào)用棧:

07-29 07:06:12.019  6231  6231 D zhibinw :  at com.android.launcher3.Launcher.onPause(Launcher.java:1237)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.Activity.performPause(Activity.java:6144)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1310)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3248)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3221)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3195)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread.access$1000(ActivityThread.java:151)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1314)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.os.Handler.dispatchMessage(Handler.java:102)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.os.Looper.loop(Looper.java:135)
07-29 07:06:12.019  6231  6231 D zhibinw :  at android.app.ActivityThread.main(ActivityThread.java:5258)
07-29 07:06:12.019  6231  6231 D zhibinw :  at java.lang.reflect.Method.invoke(Native Method)
07-29 07:06:12.019  6231  6231 D zhibinw :  at java.lang.reflect.Method.invoke(Method.java:372)
07-29 07:06:12.019  6231  6231 D zhibinw :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
07-29 07:06:12.019  6231  6231 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

至此,Launcher的onPause結(jié)束竞漾。

Launcher 向AMS發(fā)送Pause完畢的請(qǐng)求
07-29 07:06:12.022  6231  6231 D zhibinw : java.lang.RuntimeException: ActivityManagerProxy-activityPaused
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.app.ActivityManagerProxy.activityPaused(ActivityManagerNative.java:2920)
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3206)
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.app.ActivityThread.access$1000(ActivityThread.java:151)
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1314)
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.os.Handler.dispatchMessage(Handler.java:102)
07-29 07:06:12.022  6231  6231 D zhibinw :  at android.os.Looper.loop(Looper.java:135)
AMS向Zygote請(qǐng)求啟動(dòng)一個(gè)新進(jìn)程(calculator)

AMS嘗試去啟動(dòng)calculator的界面眯搭,發(fā)現(xiàn)沒有,所有想Zygote進(jìn)程請(qǐng)求創(chuàng)建一個(gè)新的進(jìn)程业岁。Zygote存在的意義就是創(chuàng)建新的進(jìn)程鳞仙,AMS通過Socket和Zygote進(jìn)行通信。

07-29 07:06:12.077  4151  5830 D zhibinw :  at android.os.Process.zygoteSendArgsAndGetResult(Process.java:579)
07-29 07:06:12.077  4151  5830 D zhibinw :  at android.os.Process.startViaZygote(Process.java:692)
07-29 07:06:12.077  4151  5830 D zhibinw :  at android.os.Process.start(Process.java:491)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3034)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:2902)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:2787)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1337)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:1926)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1477)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.resumeTopActivitiesLocked(ActivityStackSupervisor.java:2520)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1017)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:913)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:6374)
07-29 07:06:12.077  4151  5830 D zhibinw :  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:513)
07-29 07:06:12.077  4151  5830 D zhibinw :  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2223)
07-29 07:06:12.077  4151  5830 D zhibinw :  at android.os.Binder.execTransact(Binder.java:446)
Zygote fork出新進(jìn)程(calculator)笔时,在新進(jìn)程中執(zhí)行 ActivityThread類的main方法
07-29 07:06:12.104  9272  9272 D zhibinw : ZygoteInit.invokeStaticMain
07-29 07:06:12.104  9272  9272 D zhibinw : java.lang.RuntimeException: android.app.ActivityThread
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.RuntimeInit.invokeStaticMain(RuntimeInit.java:232)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.RuntimeInit.applicationInit(RuntimeInit.java:322)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.RuntimeInit.zygoteInit(RuntimeInit.java:277)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteConnection.handleChildProc(ZygoteConnection.java:911)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteConnection.runOnce(ZygoteConnection.java:267)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit.runSelectLoop(ZygoteInit.java:789)
07-29 07:06:12.104  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
alculator 向 AMS 請(qǐng)求 attach 到 AMS

新進(jìn)程啟動(dòng)后的第一件事就是上報(bào)(attach)到 SystemServer(AMS) 棍好,使得 SystemServer(AMS) 可以統(tǒng)一管理調(diào)度。

07-29 07:06:12.107  9272  9272 D zhibinw : ActivityManagerProxy-attachApplication
07-29 07:06:12.107  9272  9272 D zhibinw : java.lang.RuntimeException: ActivityManagerProxy-attachApplication
07-29 07:06:12.107  9272  9272 D zhibinw :  at android.app.ActivityManagerProxy.attachApplication(ActivityManagerNative.java:2874)
07-29 07:06:12.107  9272  9272 D zhibinw :  at android.app.ActivityThread.attach(ActivityThread.java:5095)
07-29 07:06:12.107  9272  9272 D zhibinw :  at android.app.ActivityThread.main(ActivityThread.java:5247)
07-29 07:06:12.107  9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Native Method)
07-29 07:06:12.107  9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Method.java:372)
07-29 07:06:12.107  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
07-29 07:06:12.107  9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
07-29 07:06:12.134  4151  6177 D zhibinw : scheduleLaunchActivity
07-29 07:06:12.134  4151  6177 D zhibinw : java.lang.RuntimeException: ApplicationThreadProxy-scheduleLaunchActivity
07-29 07:06:12.134  4151  6177 D zhibinw :  at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:779)
07-29 07:06:12.134  4151  6177 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1226)
07-29 07:06:12.134  4151  6177 D zhibinw :  at com.android.server.am.ActivityStackSupervisor.attachApplicationLocked(ActivityStackSupervisor.java:594)
07-29 07:06:12.134  4151  6177 D zhibinw :  at com.android.server.am.ActivityManagerService.attachApplicationLocked(ActivityManagerService.java:6084)
07-29 07:06:12.134  4151  6177 D zhibinw :  at com.android.server.am.ActivityManagerService.attachApplication(ActivityManagerService.java:6146)
07-29 07:06:12.134  4151  6177 D zhibinw :  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:481)
07-29 07:06:12.134  4151  6177 D zhibinw :  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2223)
07-29 07:06:12.134  4151  6177 D zhibinw :  at android.os.Binder.execTransact(Binder.java:446)
AMS請(qǐng)求calculator launch

AMS 調(diào)用 scheduleLaunchActivity 通過IPC 傳遞到 ActivityThread 的 scheduleLaunchActivity允耿,在 ActivityThread 里面它用 Message 的方式發(fā)送自己主線程的 Handler 來(lái)異步處理

9272  9272 D zhibinw :  at com.android.calculator2.Calculator.onCreate(Calculator.java:158)
9272  9272 D zhibinw :  at android.app.Activity.performCreate(Activity.java:6033)
9272  9272 D zhibinw :  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
9272  9272 D zhibinw :  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
9272  9272 D zhibinw :  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
9272  9272 D zhibinw :  at android.app.ActivityThread.access$800(ActivityThread.java:151)
9272  9272 D zhibinw :  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
9272  9272 D zhibinw :  at android.os.Handler.dispatchMessage(Handler.java:102)
9272  9272 D zhibinw :  at android.os.Looper.loop(Looper.java:135)
9272  9272 D zhibinw :  at android.app.ActivityThread.main(ActivityThread.java:5258)
9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Native Method)
9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Method.java:372)
9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
9272  9272 D zhibinw :  at com.android.calculator2.Calculator.onResume(Calculator.java:260)
9272  9272 D zhibinw :  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
9272  9272 D zhibinw :  at android.app.Activity.performResume(Activity.java:6119)
9272  9272 D zhibinw :  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975)
9272  9272 D zhibinw :  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
9272  9272 D zhibinw :  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
9272  9272 D zhibinw :  at android.app.ActivityThread.access$800(ActivityThread.java:151)
9272  9272 D zhibinw :  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
9272  9272 D zhibinw :  at android.os.Handler.dispatchMessage(Handler.java:102)
9272  9272 D zhibinw :  at android.os.Looper.loop(Looper.java:135)
9272  9272 D zhibinw :  at android.app.ActivityThread.main(ActivityThread.java:5258)
9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Native Method)
9272  9272 D zhibinw :  at java.lang.reflect.Method.invoke(Method.java:372)
9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
9272  9272 D zhibinw :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

參考

Android 應(yīng)用程序啟動(dòng)過程分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末借笙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子较锡,更是在濱河造成了極大的恐慌业稼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚂蕴,死亡現(xiàn)場(chǎng)離奇詭異低散,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)骡楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門熔号,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸟整,你說我怎么就攤上這事跨嘉。” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵祠乃,是天一觀的道長(zhǎng)梦重。 經(jīng)常有香客問我,道長(zhǎng)亮瓷,這世上最難降的妖魔是什么琴拧? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮嘱支,結(jié)果婚禮上蚓胸,老公的妹妹穿的比我還像新娘。我一直安慰自己除师,他們只是感情好沛膳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汛聚,像睡著了一般锹安。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倚舀,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天叹哭,我揣著相機(jī)與錄音,去河邊找鬼痕貌。 笑死风罩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舵稠。 我是一名探鬼主播超升,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哺徊!你這毒婦竟也來(lái)了室琢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤唉工,失蹤者是張志新(化名)和其女友劉穎研乒,沒想到半個(gè)月后汹忠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淋硝,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年宽菜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谣膳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铅乡,死狀恐怖继谚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阵幸,我是刑警寧澤花履,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布芽世,位于F島的核電站,受9級(jí)特大地震影響诡壁,放射性物質(zhì)發(fā)生泄漏济瓢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一妹卿、第九天 我趴在偏房一處隱蔽的房頂上張望旺矾。 院中可真熱鬧,春花似錦夺克、人聲如沸箕宙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柬帕。三九已至,卻和暖如春室囊,著一層夾襖步出監(jiān)牢的瞬間雕崩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工融撞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盼铁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓尝偎,卻偏偏與公主長(zhǎng)得像饶火,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子致扯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容