您的位置:首页 > 移动开发 > Android开发

Android之Activity生命周期

2015-11-17 16:41 543 查看
Activity生命周期中的方法

①onCreate()

activity被创建的时候(此时会把UI中所有的控件画上去)调用。在这个方法中你应该做一些静态的设置,比如创建View(这就是为什么新建一个Android项目时的MainActivity中第一句话是setContentView(R.layout.activity_main);)、绑定数据到某些列表上(因为这个方法是所有生命周期方法中第一个被执行的方法,当然想打开activity就看到数据。如果使用http协议取出json数据,初始化控件应该放到onCreate()方法中)。这个方法中会传递一个Bundle
Object的对象,对象包含这个activity之前的一些状态,这些状态可以被捕获(Android的现场保护)。在onCreate()方法之后是onStart()方法

②onStart()

当activity变成用户可见的被调用。如果activity变成可见的则在onResumed()后被调用,或者调用onStop()方法,它就变成隐藏的。

③onRestart()

④onResumed()

调用之前activity开始和用户进行交互,并且,这个activity位于activity栈的顶端。只有当onRestart()、onStart()和onResumed()三个状态走完了,用户才可以进行交互。

案例:用事实在手机上运行,对activity生命周期描述:

打开手机,第一次运行程序的时候

--onCreate方法->>

--onStart方法->>

--onResume方法->>

手机锁屏之后

--onPause方法->>

--onStop方法->>

重新打开手机,看到应用程序

--onRestart方法->>

--onStart方法->>

--onResume方法->>

按手机回退键,退出程序

--onPause方法->>

--onStop方法->>

--onDestroy方法->>

测试代码如下:

public class MainActivity extends ActionBarActivity {

private final String TAG = "MainActivity";

/**
* 1、第一次被调用,仅仅被调用一次 2、初始化布局View或者绑定数据
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "--onCreate方法->>");
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG, "--onStart方法->>");
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG, "--onResume方法->>");
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG, "--onPause方法->>");
}

@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i(TAG, "--onRestart方法->>");
}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i(TAG, "--onStop方法->>");
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "--onDestroy方法->>");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: