- 活动被创建执行的第一个方法
- 隐藏标题栏
- 在活动中使用Toast
- 销毁活动
- 活动的四种状态和七种回调方法
- 对话框式的活动
- 在活动回收之前保存数据
- 知晓当前是在哪一个活动
- 随时随地退出程序
- 启动活动的最佳写法
活动被创建执行的第一个方法
- public class HelloWorldActivity extends Activity {
- //onCreate()是活动被创建时必定执行的方法
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.hello_world_layout); //引入hello_world_layout.xml布局
- }
隐藏标题栏
在onCreate方法中
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);//必须在setContentView()之前执行,不然会报错
- setContentView(R.layout.hello_world_layout); //引入hello_world_layout.xml布局
- }
在活动中使用Toast
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.first_layout);
- Button button1 = (Button) findViewById(R.id.button_1);
- button1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();
- }
- });
- }
第二个参数是文本内容
第三个参数是显示的时长
>有两个内置的常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG
销毁活动
直接使用finish(),例如点击这个按钮销毁这个活动。(一般和返回键一起使用)
- button1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
按下返回键会调用onBackPressed()方法。
活动的四种状态和七种回调方法
Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)
每个活动在其生命周期中最多可能会有四种状态。
1.运行状态
2.暂停状态
3.停止状态
4.销毁状态
Activity类中定义了七个回调方法,覆盖了活动生命周期的每一个环节。
1.onCreate()
2.onStart
3.onResume()
4.onPause() 这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。
5.onStop()
6.onDestroy()
7.onRestart()
完整生存期:onCreate()和onDestroy()方法之间所经历的
可见生存期:onStart()和onStop()方法之间所经历的
前台生存期:onResume()和onPause()方法之间所经历的
对话框式的活动
- <activity android:name=".NormalActivity" >
- </activity>
- <activity android:name=".DialogActivity" android:theme="@android:style/ Theme.Dialog" >
- //指定主题是对话框式,xml文件的代码和普通的一样,启动这个活动是不会遮挡整个屏幕。
- </activity>
在活动回收之前保存数据
- @Override
- //这个方法会保证一定在活动被回收之前调用
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- String tempData = "Something you just typed";
- outState.putString("data_key", tempData);
- }
- @Override
- //Bundle参数一般情况下都是null,但是如果有通过onSaveInstanceState()方法来保存数据的话,这个参数会存有之前所保存的全部数据。
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- if (savedInstanceState != null) {
- String tempData = savedInstanceState.getString("data_key");
- }
- }
Bundle可以结合Intent一起传递数据。
知晓当前是在哪一个活动
新建一个AaseActivity类继承自Activity类并重写它的方法
- public class BaseActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.d("BaseActivity", getClass().getSimpleName()); //获取当前实例的类名
- }
- }
随时随地退出程序
新建一个ActivityCollector类作为活动管理器
- public class ActivityCollector {
- public static List<Activity> activities = new ArrayList<Activity>();
- public static void addActivity(Activity activity) {
- activities.add(activity);
- }
- public static void removeActivity(Activity activity) {
- activities.remove(activity);
- }
- public static void finishAll() {
- for (Activity activity : activities) {
- if (!activity.isFinishing()) {
- activity.finish();
- }
- }
- }
- }
- public class BaseActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ActivityCollector.addActivity(this);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- ActivityCollector.removeActivity(this);
- }
- }
启动活动的最佳写法
在要启动的活动中(目的活动)
- public class SecondActivity extends BaseActivity {
- public static void actionStart(Context context, String data1, String data2) {
- Intent intent = new Intent(context, SecondActivity.class);
- intent.putExtra("param1", data1);
- intent.putExtra("param2", data2);
- context.startActivity(intent);
- }
- //添加了一个actionStart()方法,在这个方法中完成了Intent的构建,另外所有SecondActivity中需要的数据都是通过actionStart()方法的参数传递过来的,然后把它们存储到Intent中,最后调用startActivity()方法启动SecondActivity。
- ……
- }
- button1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
- }
- });