android 17 activity生命周期
手机指南针传感器处于手机头部。
Activity生命周期:
启动。
onCreat()方法:初始化布局对象,设置监听器。
onstart()方法:注册监听器。
onResume():activity已经是屏幕最前端了,
running,已经是最前端了,可以触摸了,可以响应。
onPause():其他activity把之前的ancity完全遮住了,则调用onPause()方法暂停本acticity,然后调用onStop方法停止这个activity。如果只是部分遮住,则调用onPause()方法暂停本acticity,不调用onStop方法。停止住的acticity的数据和成员变量都是保存的,当挡住的acticity不遮住的时候会重新加载,里面的数据可以重新使用。处于暂停和停止的acticity的数据和成员变量都是保存的可以重新使用。处于暂停和停止的acticity有2种走向,当系统内存不足是会把停止的acticity杀掉,出了暂停的acticity优先级高于停止的acticity,当内存极度缺乏的时候也会杀掉处于暂停的acticity。但系统内存足够的时候,当挡住的activity不再挡住时,处于暂停的acticity调用onResume()方法启动,处于停止的activity调用onRestart()方法启动。
关掉activity时会依次调用onPause()onStop()ondestiry()方法,ondestiry()可以保存数据释放流资源和监听器和网络资源。流资源和数据库占用的是系统内存之外的资源,gc只能回收内存的对象,因此要释放外部资源。
如果系统资源匮乏,处于停止的activity被系统杀掉了则不会执行onDestory(),所以在onStop()方法里面就要释放资源。
第一个activity:
package com.sxt.day04_03; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("main","onCreate()"); setListener(); } private void setListener() { findViewById(R.id.button).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); } @Override protected void onStart() { super.onStart(); Log.i("main","onStart()"); } @Override protected void onResume() { super.onResume(); Log.i("main","onResume()"); } @Override protected void onPause() { super.onPause(); Log.i("main", "onPause()"); } @Override protected void onStop() { super.onStop(); Log.i("main","onStop()"); } @Override protected void onDestroy() { super.onDestroy(); Log.i("main","onDestroy()"); } @Override protected void onRestart() { super.onRestart(); Log.i("main","onRestatr()"); } }
第二个activity:
package com.sxt.day04_03; import android.app.Activity; import android.os.Bundle; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }