Activity间传递数据、生命周期和事件

来源:互联网 发布:mac系统硬盘对拷 编辑:程序博客网 时间:2024/04/28 01:23

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

1startActivityForResultintent // 请求

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

Activity2:

2setResult()//反馈

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

onCreate();

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

onResume();

onPause();

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

onDestroy();

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

onSaveInstanceState(); // 保存数据

onRestoreInstanceState(); // 读取数据

常用事件有哪些?

onKeyUp();

onKeyDown();

onKeyLongPress();

onKeyMultiple();

onTouchEvent();

0 0
原创粉丝点击