Android Activity生命周期

来源:互联网 发布:淘宝知识侵权 编辑:程序博客网 时间:2024/06/06 08:52

Activity官方文档

Activity 生命周期

使用到的Activity

public abstract class BaseActivity extends Activity {    //protected String TAG = getTag();    abstract String getTag();    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d(getTag(), "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]," + " isFinishing:" + isFinishing());    }    @Override    protected void onStart() {        super.onStart();        Log.d(getTag(), "onStart() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onRestart() {        super.onRestart();        Log.d(getTag(), "onRestart() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onResume() {        super.onResume();        Log.d(getTag(), "onResume() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onPause() {        super.onPause();        Log.d(getTag(), "onPause() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onStop() {        super.onStop();        Log.d(getTag(), "onStop() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.d(getTag(), "onDestroy() called," + " isFinishing:" + isFinishing());    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        Log.d(getTag(), "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = [" + resultCode + "], data = [" + data + "]");    }}
public class Activity0 extends BaseActivity {    protected String TAG = "Activity0";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test_finish);        //finish();    }    @Override    protected void onStart() {        super.onStart();        //finish();    }    @Override    String getTag() {        return TAG;    }    public void onClick(View view) {        int id = view.getId();        switch (id) {            case R.id.button:                //finish();                Intent intent = new Intent(Intent.ACTION_SEND);                intent.setType("video/*");                intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://media/external/video/media/63"));                startActivity(intent);                break;            case R.id.button1:                startActivityForResult(new Intent(this, Activity1.class), 200);                break;        }    }}
public class Activity1 extends BaseActivity {    protected String TAG = "Activity1";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test_finish2);    }    @Override    String getTag() {        return TAG;    }    public void onClick(View view) {        setResult(RESULT_OK);    }}

Activity的一些典型生命周期,有些并不会执行中间一些回调.

正常启动,点击按钮finishActivity0: onRestart() calledActivity0: onStart() calledActivity0: onResume() called, isFinishing:false===>Button.onClick => finishActivity0: onPause() called, isFinishing:trueActivity0: onStop() called, isFinishing:trueActivity0: onDestroy() called, isFinishing:true
正常启动,点击BACKActivity0: onCreate() called with: savedInstanceState = [null]Activity0: onStart() calledActivity0: onResume() called, isFinishing:false===>press BACKActivity0: onPause() called, isFinishing:trueActivity0: onStop() called, isFinishing:trueActivity0: onDestroy() called, isFinishing:true
启动新Activity,setResult并finishActivity0: onCreate() called with: savedInstanceState = [null]Activity0: onStart() calledActivity0: onResume() called, isFinishing:falseActivity0: onPause() called, isFinishing:false===>startActivityForResultActivity1: onCreate() called with: savedInstanceState = [null]Activity1: onStart() calledActivity1: onResume() called, isFinishing:falseActivity0: onStop() called, isFinishing:false===>setResultActivity1: onPause() called, isFinishing:trueActivity0: onActivityResult() called with: requestCode = [200], resultCode = [-1], data = [null]Activity0: onRestart() calledActivity0: onStart() calledActivity0: onResume() called, isFinishing:falseActivity1: onStop() called, isFinishing:trueActivity1: onDestroy() called, isFinishing:true
在onCreate里finishActivity0: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity0: onDestroy() called, isFinishing:true
在onStart里finishActivity0: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity0: onStart() called, isFinishing:falseActivity0: onStop() called, isFinishing:trueActivity0: onDestroy() called, isFinishing:true
启动透明背景的Activity,例如android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar"Activity0: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity0: onStart() called, isFinishing:falseActivity0: onResume() called, isFinishing:false===>start transparent ActivityActivity0: onPause() called, isFinishing:falseActivity1: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity1: onStart() called, isFinishing:falseActivity1: onResume() called, isFinishing:false===>setResultActivity1: onPause() called, isFinishing:trueActivity1: onStop() called, isFinishing:trueActivity1: onDestroy() called, isFinishing:trueActivity0: onActivityResult() called with: requestCode = [200], resultCode = [0], data = [null]Activity0: onResume() called, isFinishing:false
使用ACTION_SEND启动Activity,只会走到onPauseIntent intent = new Intent(Intent.ACTION_SEND);intent.setType("video/*");intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://media/external/video/media/63"));startActivity(intent);Activity0: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity0: onStart() called, isFinishing:falseActivity0: onResume() called, isFinishing:false===>启动Activity,并不会执行onStopActivity0: onPause() called, isFinishing:false===>退出Share的ActivityActivity0: onResume() called, isFinishing:false
横竖屏切换Activity0: onCreate() called with: savedInstanceState = [null], isFinishing:falseActivity0: onStart() called, isFinishing:falseActivity0: onResume() called, isFinishing:false==>横屏Activity0: onPause() called, isFinishing:falseActivity0: onStop() called, isFinishing:falseActivity0: onDestroy() called, isFinishing:falseActivity0: onCreate() called with: savedInstanceState = [Bundle[{android:viewHierarchyState=Bundle[{android:views={16908290=android.view.AbsSavedState$1@5c9ef82, 2131558525=android.view.AbsSavedState$1@5c9ef82, 2131558526=android.view.AbsSavedState$1@5c9ef82}, android:ActionBar={16909295=android.widget.Toolbar$SavedState@e80c693}, android:Panels={0=com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState@20786d0, 8=com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState@d27f6c9}}]}]], isFinishing:falseActivity0: onStart() called, isFinishing:falseActivity0: onResume() called, isFinishing:false
原创粉丝点击