當該頁面(Activity)被啓動時java
會執行onCreate()、onStart()、onRestart()這三個方法,android
只有當onRestart() 方法執行完後纔會處於一個運行狀態(Activity running)app
若是另一個activity 跑到當前正在執行的activity前面了,咱們當前的activity就會執行onPause()方法,好比來電話了長按Home鍵的狀況。dom
若是從onPause()方法返回到activity頁面的時候,會執行一次onResume(),再回到activity。eclipse
若是頁面從活動狀態,變爲不可見狀態時,也就是中止狀態時候,ide
會執行onPause()方法後再執行onStop()方法。 函數
若是從onStop()方法處返回到頁面時,佈局
會執行一個onRestart()方法後執行onStart()方法接着再執行onResume()方法後回到頁面。測試
注意:若是處於onStop()或者onPause()方法時候,頁面因爲手機內存低、或者被其餘軟件殺掉的時候,this
再返回頁面時候,會從onCreate()方法開始執行,接着onRestart()、onStart()、onResume()
onDestroy()方法,被系統關閉的時候或者手動的時候纔會執行,執行完這個方法後,咱們的activity就被完全關閉了。
活動的整個生命週期由如下Activity方法定義。
public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
經過添加activity中theme參數能夠修改界面的樣式,
以下兩個圖,能夠看出添加theme樣式後菜單欄改沒了,固然樣式能夠選擇其餘的,會有不一樣效果。
1.首先新建一個activity頁面,
用的Android studio,建的比較快,
若是用eclipse的話須要先建立一個類,而且擴展至Activity,
而後在AndroidManifest.XML中配置添加頁面,
<activity android:name=".Main2Activity"></activity>
還要在layout中新建一個內容佈局,而且在建立的類中的onCreate方法中綁定它。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); }
這裏我直接經過Android studio建立,省略以上步驟。
2.在activity1視圖中建立一個標籤和一個按鈕
注意ID的寫法,自定義ID得加上@+/
接着回到視圖A類,
編寫如下代碼
執行效果以下,點擊後跳轉到第二個頁面
設計以下,在第二個頁面中拖入一個按鈕,把當前activity關閉掉
private Button btnButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); btnButton =findViewById(R.id.btnClose); btnButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); }
點擊關閉後回到頁面一
設計思路:在頁面二中建立一個標籤,用來接收來自頁面一的數據,
而後經過按鈕「啓動第二個頁面」把數據帶到頁面二。
執行效果也是同樣 的。
當頁面二activity關閉的時候,從頁面二把數據傳回,而後從頁面一得到數據並顯示到頁面一。
在頁面一想獲得一面二傳回來的數據,這裏就不能用startActivity方法,
要改用startActivityForResult函數。
而且重載onActivityResult方法,下圖中經過data.getStringExtra獲得視圖二返回的參數
下圖爲視圖二,這裏在finish以前使用setResult將參數傳回
測試以下,先進入視圖一,下圖中TextView 是默認值,當前沒有收到返回值
接着點擊啓動第二個頁面
而後點擊關閉,這裏能夠看到已經獲得了從頁面二返回的數據
package com.ali.application.mytest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.w3c.dom.Text; public class MainActivity extends AppCompatActivity { private Button S2;//定義一個按鈕 private TextView tRe;//定義一個標籤 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); S2=findViewById(R.id.S2);//經過findViewById查找視圖中按鈕 tRe=findViewById(R.id.tRe); S2.setOnClickListener(new View.OnClickListener() {//設置一個事件監聽器 @Override public void onClick(View view) { //啓動頁面2 Intent i = new Intent(MainActivity.this,Main2Activity.class); //i.putExtra("val","mytest"); Bundle data=new Bundle(); data.putString("val","myTest"); i.putExtras(data); // startActivity(i);//要取得返回值的話不能用這個函數 startActivityForResult(i,0);//這裏的0對應onActivityResult方法中的requestCode } }); System.out.println("Create"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String re=data.getStringExtra("val"); tRe.setText(re); super.onActivityResult(requestCode, resultCode, data); } @Override protected void onStart() { super.onStart(); System.out.println("start"); } @Override protected void onResume() { super.onResume(); System.out.println("resume"); } @Override protected void onPause() { super.onPause(); System.out.println("pause"); } @Override protected void onStop() { super.onStop(); System.out.println("stop"); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("destroy"); } @Override protected void onRestart() { super.onRestart(); System.out.println("restart"); } }
package com.ali.application.mytest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Main2Activity extends AppCompatActivity { private Button btnButton; private TextView tOut;//定義一個標籤 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); btnButton =findViewById(R.id.btnClose); btnButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(); i.putExtra("val","testResult"); setResult(0,i); finish(); } }); tOut = findViewById(R.id.tOut); //tOut.setText(getIntent().getStringExtra("val")); Bundle data=getIntent().getExtras(); tOut.setText(data.getString("val")); } }