ym——Android从零开始(12)(Activity传递返回参数+生命周期+横竖屏+保持临时数据)(新)

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!


前言

上篇我们讲了一个Activity跳转到另外一个Activity如何传递参数,现在我们要讲如果在关闭了第二个Activiy的时候将参数返回给第一个Activity。以及非常重要的Activity生命周期,还有就是实战中经常遇到的开发问题解决方案。


Activity间传递数据打开一个activity关闭之后,返回数据

Activity1

public void open(View v){
           Intent intent = newIntent(this,OtherActivity.class);
           //requestCode :请求码(区分请求的来源)
           startActivityForResult(intent, 100);
    }
protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
           //TODO Auto-generated method stub
           super.onActivityResult(requestCode,resultCode, data);
           if(requestCode== 100 && resultCode == 200 && data != null){
                  String info =data.getStringExtra("info");
                  et_info.setText(info);
           }

Activity2:

public void close(View v){
           String info =et_info.getText().toString();
           Intent data = new Intent();
           data.putExtra("info", info);
           //resultCode 结果码(区分返回的结果)
           setResult(200, data);
           
           //关闭Activity
           finish();
}


Activity生命周期

完整生命周期

  onCreate()  

  --> onStart()

  --> onResume()

   可以在手机上看见activity

  ---> onPause()

  --> onStop()

   看不见了

  ---> onDestory()

   销毁了


前台生命周期

  onstart()  ---> onStop()之间进行切换

  onCreate() --> onStart() --> onResume()

   现在有一个activity完全覆盖

  onPause()  ----> onStop()

   如果上面的activity关闭

  onRestart() ---> onStart() --> onResume()

   

可视生命周期

   onResume()  ---> onPause()之间进行切换

  onCreate() --> onStart() --> onResume()

   现在有一个activity没有完全覆盖

  onPause()

   如果上面的activity关闭

  onResume()


临时数据

临时数据:应用程序出现异常。我们需要保存的数据。

//保存临时数据
   @Override
   protected void onSaveInstanceState(Bundle outState) {
           // TODO Auto-generated method stub
           super.onSaveInstanceState(outState);
           outState.putInt("page", 88);
    }
   
   //用来恢复数据
   @Override
   protected void onRestoreInstanceState(Bundle savedInstanceState) {
           // TODO Auto-generated method stub
           super.onRestoreInstanceState(savedInstanceState);
           int page = savedInstanceState.getInt("page");
           Log.i("i","page:"+page);
}

横竖屏问题

ctrl+ F12 可以让模拟器横竖屏切换

竖屏---》横屏

先杀死一个Activity,再创建一个Activity

横屏---》竖屏

先杀死一个Activity,再创建一个Activity,

再杀死一个Activity,再创建一个Activity

原因:android的键盘导致

如果要变成一样:

<activity
           android:label="@string/app_name"
           android:name=".MainActivity"
           android:configChanges="keyboardHidden">

此时会创建一个Activity实例

我不想创建。

<activity
           android:label="@string/app_name"
           android:name=".MainActivity"
           android:configChanges="keyboardHidden|orientation">

此时不会创建实例

我想横屏和竖屏显示不一样。

//当切屏幕的时候触发
    public voidonConfigurationChanged(Configuration newConfig) {
           // TODO Auto-generated method stub
           super.onConfigurationChanged(newConfig);
           int orientation = newConfig.orientation;
           //竖屏
           if(orientation ==Configuration.ORIENTATION_PORTRAIT){
                  setContentView(R.layout.main);// 切换视图
           }else{
                  setContentView(R.layout.other);
           }
}


事件

//触摸事件

onTouchEvent()

//键盘按下

onKeyDown()

//键盘弹起

onKeyUp()

//键盘长按

onKeyLongPresss()

//键盘重复点击

onKeyMultiple()


必须知道的问题~!(面试经常问到)

activity返回时,如何返回数据?  

Activity1

1.startActivityForResultintent // 请求

3.onActivityResult() // 回调拿到反馈数据

Activity2:

2.setResult()//反馈

activity生命周期有哪些状态,有哪些方法?

onCreate();

onStart();-------------

onResume();

onPause();

onStop(); ---------onReStart();

onDestroy();

异常情况下保存临时数据的方法?      

onSaveInstanceState(); // 保存数据

onRestoreInstanceState(); // 读取数据

常用事件有哪些?

onKeyUp();

onKeyDown();

onKeyLongPress();

onKeyMultiple();

onTouchEvent();

你可能感兴趣的:(android,高薪就业,android从零开始)