Android —— Activity的四種啟動(dòng)模式

除了Activity的生命周期外躯泰,Activity的啟動(dòng)模式也是一個(gè)難點(diǎn)憔鬼,有時(shí)候?yàn)榱藵M(mǎn)足項(xiàng)目的特殊需求,就必須使用Activity的啟動(dòng)模式。

在默認(rèn)情況下沙郭,當(dāng)我們多次啟動(dòng)同一個(gè)Activity的時(shí)候,系統(tǒng)會(huì)創(chuàng)建多個(gè)實(shí)例并把它們放入任務(wù)棧中押袍,但是有些場(chǎng)景重復(fù)創(chuàng)建多個(gè)實(shí)例琼开,是沒(méi)有必要且浪費(fèi)資源的,這就需要啟動(dòng)模式來(lái)修改系統(tǒng)的默認(rèn)行為精算。

下面瓢宦,我將以理論+實(shí)踐的形式為大家介紹Activity的啟動(dòng)模式。

standard標(biāo)準(zhǔn)模式

這是系統(tǒng)的默認(rèn)啟動(dòng)模式灰羽,采用這種模式的Activity無(wú)論是否已經(jīng)存在實(shí)例驮履,都會(huì)重新創(chuàng)建一個(gè)實(shí)例鱼辙,在這種模式下誰(shuí)啟動(dòng)了這個(gè)Activity,那么這個(gè)Activity就運(yùn)行在啟動(dòng)它的那個(gè)Activity所在的棧中玫镐。

實(shí)踐:MainActivity 采用 standard 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }
    
    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 18:37:59.622 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onCreate: 0
2022-04-21 18:37:59.625 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onStart: 0
2022-04-21 18:37:59.626 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)MainActivity
2022-04-21 18:38:03.336 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onPause: 0
2022-04-21 18:38:03.373 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onCreate: 1
2022-04-21 18:38:03.378 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onStart: 1
2022-04-21 18:38:03.379 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onResume: 1
2022-04-21 18:38:03.939 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onStop: 0
2022-04-21 18:38:03.942 4072-4072/com.hnucm.myapplication I/MainActivityLog: 12onSaveInstanceState: 0

singleTop棧頂復(fù)用模式

在這種模式下倒戏,如果新的Activity已經(jīng)位于任務(wù)棧的棧頂,那么此Activity不會(huì)被重新創(chuàng)建恐似,同時(shí)它的NewIntent方法將會(huì)被回調(diào)杜跷。如果新Activity的實(shí)例已存在但不是位于棧頂,那么新Activity依然會(huì)被創(chuàng)建矫夷。

實(shí)踐:MainActivity 采用 singleTop 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }
    
    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 18:52:30.963 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onCreate: 0
2022-04-21 18:52:30.968 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onStart: 0
2022-04-21 18:52:30.970 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)MainActivity
2022-04-21 18:52:35.601 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onPause: 0
2022-04-21 18:52:35.603 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onNewIntent: 0
2022-04-21 18:52:35.604 4205-4205/com.hnucm.myapplication I/MainActivityLog: 13onResume: 0

MainActivity 采用 singleTop 模式葛闷,SecondActivity采用 standard 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,SecondActivity.class);
                startActivity(intent);
        }
    }
}

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "SecondActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i(TAG, getTaskId() +"onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button2);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button2:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 18:58:54.961 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onCreate: 0
2022-04-21 18:58:54.964 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onStart: 0
2022-04-21 18:58:54.966 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)SecondActivity
2022-04-21 19:00:13.845 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onPause: 0
2022-04-21 19:00:13.895 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onCreate: 0
2022-04-21 19:00:13.898 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onStart: 0
2022-04-21 19:00:13.900 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onResume: 0
2022-04-21 19:00:14.531 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onStop: 0
2022-04-21 19:00:14.534 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onSaveInstanceState: 0
// 點(diǎn)擊SecondActivity的按鈕啟動(dòng)MainActivity
2022-04-21 19:00:21.287 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onPause: 0
2022-04-21 19:00:21.321 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onCreate: 1
2022-04-21 19:00:21.329 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onStart: 1
2022-04-21 19:00:21.331 4815-4815/com.hnucm.myapplication I/MainActivityLog: 20onResume: 1
2022-04-21 19:00:21.865 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onStop: 0
2022-04-21 19:00:21.866 4815-4815/com.hnucm.myapplication I/SecondActivityLog: 20onSaveInstanceState: 0

singleTask棧內(nèi)復(fù)用模式

這是一種單實(shí)例模式,在這種模式下双藕,只要Activity在一個(gè)棧中存在淑趾,那么多次啟動(dòng)此Activity都不會(huì)重新創(chuàng)建實(shí)例,而是回調(diào)onNewIntent()忧陪。

實(shí)踐:MainActivity 采用 singleTask 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }
    
    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 19:05:26.977 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onCreate: 0
2022-04-21 19:05:26.981 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onStart: 0
2022-04-21 19:05:26.982 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)MainActivity
2022-04-21 19:05:29.539 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onPause: 0
2022-04-21 19:05:29.540 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onNewIntent: 0
2022-04-21 19:05:29.541 4945-4945/com.hnucm.myapplication I/MainActivityLog: 21onResume: 0

MainActivity 采用 singleTask 模式扣泊,SecondActivity采用 standard 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,SecondActivity.class);
                startActivity(intent);
        }
    }
}

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "SecondActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i(TAG, getTaskId() +"onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button2);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button2:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 19:11:04.891 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onCreate: 0
2022-04-21 19:11:04.894 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onStart: 0
2022-04-21 19:11:04.897 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)SecondActivity 
2022-04-21 19:11:18.653 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onPause: 0
2022-04-21 19:11:18.690 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onCreate: 0
2022-04-21 19:11:18.694 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onStart: 0
2022-04-21 19:11:18.696 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onResume: 0
2022-04-21 19:11:19.232 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onStop: 0
2022-04-21 19:11:19.235 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onSaveInstanceState: 0
// 點(diǎn)擊SecondActivity的按鈕啟動(dòng)MainActivity
2022-04-21 19:11:29.909 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onPause: 0
2022-04-21 19:11:29.928 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onRestart: 0
2022-04-21 19:11:29.930 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onStart: 0
2022-04-21 19:11:29.931 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onNewIntent: 0
2022-04-21 19:11:29.932 5045-5045/com.hnucm.myapplication I/MainActivityLog: 22onResume: 0
2022-04-21 19:11:30.498 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onStop: 0
2022-04-21 19:11:30.499 5045-5045/com.hnucm.myapplication I/SecondActivityLog: 22onDestroy: 0

singleInstance單實(shí)例模式

這是一種加強(qiáng)的singleTask模式,它除了具有singleTask模式的所有特性外嘶摊,還加強(qiáng)了一點(diǎn)延蟹,那就是具有此模式的Activity只能單獨(dú)的位于一個(gè)任務(wù)棧中。

實(shí)踐:MainActivity 采用 singleInstance 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }
    
    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 19:18:03.183 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onCreate: 0
2022-04-21 19:18:03.186 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onStart: 0
2022-04-21 19:18:03.188 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)MainActivity
2022-04-21 19:18:11.416 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onPause: 0
2022-04-21 19:18:11.419 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onNewIntent: 0
2022-04-21 19:18:11.419 5193-5193/com.hnucm.myapplication I/MainActivityLog: 23onResume: 0

MainActivity 采用 singleInstance 模式叶堆,SecondActivity采用 standard 模式

// 核心代碼展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "MainActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, getTaskId() + "onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼
    
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button:
                Intent intent = new Intent(this,SecondActivity.class);
                startActivity(intent);
        }
    }
}

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    final static String TAG = "SecondActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i(TAG, getTaskId() +"onCreate: " + getIntent().getIntExtra("id",0));
        button = findViewById(R.id.button2);
        button.setOnClickListener(this);
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, getTaskId() +"onStart: " + getIntent().getIntExtra("id",0));
    }

    //此處省略重復(fù)代碼

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.button2:
                Intent intent = new Intent(this,MainActivity.class);
                intent.putExtra("id",1);
                startActivity(intent);
        }
    }
}
// 日志結(jié)果展示
// 啟動(dòng)MainActivity
2022-04-21 19:19:25.783 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onCreate: 0
2022-04-21 19:19:25.786 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onStart: 0
2022-04-21 19:19:25.787 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onResume: 0
// 點(diǎn)擊MainActivity的按鈕啟動(dòng)SecondActivity 
2022-04-21 19:19:34.745 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onPause: 0
2022-04-21 19:19:34.825 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onCreate: 0
2022-04-21 19:19:34.868 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onStart: 0
2022-04-21 19:19:34.871 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onResume: 0
2022-04-21 19:19:35.464 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onStop: 0
2022-04-21 19:19:35.466 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onSaveInstanceState: 0
// 點(diǎn)擊SecondActivity的按鈕啟動(dòng)MainActivity
2022-04-21 19:19:45.068 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onPause: 0
2022-04-21 19:19:45.078 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onRestart: 0
2022-04-21 19:19:45.079 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onStart: 0
2022-04-21 19:19:45.080 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onNewIntent: 0
2022-04-21 19:19:45.081 5261-5261/com.hnucm.myapplication I/MainActivityLog: 24onResume: 0
2022-04-21 19:19:45.802 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onStop: 0
2022-04-21 19:19:45.803 5261-5261/com.hnucm.myapplication I/SecondActivityLog: 25onSaveInstanceState: 0

以上就是Activity啟動(dòng)模式的介紹阱飘。

歡迎留言指出錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹂空,一起剝皮案震驚了整個(gè)濱河市俯萌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌上枕,老刑警劉巖咐熙,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辨萍,居然都是意外死亡棋恼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)锈玉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)爪飘,“玉大人,你說(shuō)我怎么就攤上這事拉背∈ζ椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵椅棺,是天一觀的道長(zhǎng)犁罩。 經(jīng)常有香客問(wèn)我齐蔽,道長(zhǎng),這世上最難降的妖魔是什么床估? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任含滴,我火速辦了婚禮,結(jié)果婚禮上丐巫,老公的妹妹穿的比我還像新娘谈况。我一直安慰自己,他們只是感情好递胧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布碑韵。 她就那樣靜靜地躺著,像睡著了一般谓着。 火紅的嫁衣襯著肌膚如雪泼诱。 梳的紋絲不亂的頭發(fā)上坛掠,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天赊锚,我揣著相機(jī)與錄音,去河邊找鬼屉栓。 笑死舷蒲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的友多。 我是一名探鬼主播牲平,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼域滥!你這毒婦竟也來(lái)了纵柿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤启绰,失蹤者是張志新(化名)和其女友劉穎昂儒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體委可,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渊跋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了着倾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拾酝。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卡者,靈堂內(nèi)的尸體忽然破棺而出蒿囤,到底是詐尸還是另有隱情,我是刑警寧澤崇决,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布材诽,位于F島的核電站镶摘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏岳守。R本人自食惡果不足惜凄敢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望湿痢。 院中可真熱鬧涝缝,春花似錦、人聲如沸譬重。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)臀规。三九已至滩援,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塔嬉,已是汗流浹背玩徊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨究,地道東北人恩袱。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胶哲,于是被迫代替她去往敵國(guó)和親畔塔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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