Android_activity 生命週期

來源:互聯網
上載者:User

標籤:create   標題   完全   cte   button   png   col   對象   gac   

Android_activity 生命週期

  activity是Android四大組件之一,每一個activity都有自己的生命週期,就像每一個人一樣會經曆

      出生-----學會行走,交流------健康------生病------痊癒------健康-------死亡

  對於activity的理解,Android官網提供了這樣一張圖:

  

  onCreate:activity第一次建立

  onStart:使用者可以看見activity,但還不能點擊操作

  onResume:擷取焦點,可以進行點擊操作

  Activity is Running:activity正常運行

  onPause:被暫停

  onStop:停止運行

  onDestroy:被銷毀

  onRestart:重新運行

流程說明:onPause→onResume  activity沒有完全被另一個activity覆蓋,重新擷取焦點,恢複可操作狀態

    onStop→onRestart→onStar :第一個activity完全被第二個activity覆蓋時,再次返回第一個activity,由不可見轉為可見

    onStop→onCreate  進程被殺死時執行流程

activity生命週期:就像走樓梯一樣是一階一階的

  

  

activity之間資料的傳遞:

  現在有activityA和activityB兩個activity介面

  A為主介面,B介面需經過A介面跳轉

  當由A介面跳轉B介面時:A如何向B傳遞資料,以及B介面如何接受A介面傳遞過來的資料

  主要使用Intent類進行傳遞,如下代碼,有詳細註解

  A介面Java代碼

public class MainActivity extends AppCompatActivity {    private TextView textView,textView1;    public static final String TEXTVIEW_2 = "textview2";    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.d(TAG, "onCreate: ");        final Book book = new Book("西遊記","吳承恩");        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent(MainActivity.this, Second_activity.class);                //1.直接使用intent傳輸資料//                intent.putExtra(TEXTVIEW_2,"我是第二個activity");                //2.使用bundle傳輸資料                /*Bundle bundle = new Bundle();                bundle.putString(TEXTVIEW_2,"我是使用bundle建立的第二個activity");                intent.putExtra(BUNDLE,bundle);*/                //3.傳遞Serializable對象                intent.putExtra("name",book);                //參數2:發送的請求 int 類型                startActivityForResult(intent,999);            }        });        findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent(MainActivity.this,Dialog.class);                startActivityForResult(intent,0);            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        textView = findViewById(R.id.textView2);        super.onActivityResult(requestCode, resultCode, data);        if((requestCode == 999) && (resultCode == 12)){            if (data != null){                textView.setText(data.getSerializableExtra("textView1").toString());            }    }}

B介面Java代碼:

public class Second_activity extends AppCompatActivity {    public static final String TEXTVIEW_1 = "textview1";    TextView textView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second_layout);        textView = findViewById(R.id.textView);        //接收使用intent傳遞的資料        if(getIntent() != null){//判斷是否為空白,容易出現null 指標異常            textView.setText(getIntent().getSerializableExtra("name").toString());        }        //接收使用bundle傳遞的資料       /* if(getIntent() != null){            Bundle bundle = getIntent().getBundleExtra(MainActivity.BUNDLE);            if (bundle != null){                textView.setText(bundle.getString(MainActivity.TEXTVIEW_2));            }        }*/        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent();                intent.putExtra("textView1",new Book("水滸傳","施耐庵"));                //參數1:請求回應                setResult(12,intent);                finish();            }        });    }    //重寫返回鍵    @Override    public void onBackPressed() {//        super.onBackPressed();//會自動調用finish方法,需要注釋掉        Intent intent = new Intent();        intent.putExtra("textView1",new Book("水滸傳","施耐庵"));        //參數1:請求回應 int 類型        setResult(12,intent);        finish();    }}

Dialogactivity:

1.建立Dialogactivity繼承Activity類

2.在manifeste中修改DialogActivity的主題風格,標題

<activity            android:name=".Dialog"            android:label="請輸入手機號碼"            android:theme="@style/Theme.AppCompat.Dialog"            >

3.主activity啟動DialogActiv,並發送資料傳遞請求

findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent(MainActivity.this,Dialog.class);                startActivityForResult(intent,0);            }        });

4.DialogActivity傳回資料

public class Dialog extends AppCompatActivity {    private EditText editText;    private static final String TAG = "Dialog";    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.dialog);        editText = findViewById(R.id.editText);        findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent(Dialog.this,MainActivity.class);                intent.putExtra("name",editText.getText().toString());                Dialog.this.setResult(RESULT_OK,intent);                Dialog.this.finish();            }        });    }}

5.主activity接收資料onActivityResult方法中

   @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        textView1 = findViewById(R.id.textView3);        if((requestCode == 0) && (resultCode == RESULT_OK)){            if (data != null){                textView1.setText(data.getStringExtra("name"));            }        }    }

 

 activity的每一個生命週期都有它存在的意義,在什麼階段要進行什麼操作,只需在它對應的生命週期方法中執行相應的代碼即可~

  

  

 

Android_activity 生命週期

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.