当前位置: 首页 > >

我所遇到的Activity的一些细节

发布时间:

1.当横竖屏切换时:
? ?① 控件的状态是系统维护的,开发人员不用维护
? ?② 用户自定的变量会重新初始化
? ?解决:?
1 横竖屏切换时:
? ? ? ? ? 重写onSaveInstanceState(),在这个方法中保存数据(里面含有Bandle参数)
? ? ? ? ? 重写onCreate()或onRestoreInstanceState(),从 Bundle 中解析出已保存信息并恢复activity状态
? ? ? ? 2 在清单文件中给Activity配置 screenOrientation ---> portrait (头像 ) landscape(风景) ---限制横竖屏切换
? ? ? ? 3 在横竖屏切换时,不重新创建Acitivity?
? ? ? ? ? ?配置android:configChanges="keyboardHidden|screenSize|orientation"
? ?
? ?③ 屏幕的配置参数发生改变的时候调用的方法
? ? public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
? ?// 竖屏
}else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
? ?// 横屏
}
? ?}
? ?④ 在activity中监听返回按键的按下操作
? ? ?public boolean onKeyDown(int keyCode, KeyEvent event) {
? ? ? ? if (keyCode == KeyEvent.KEYCODE_BACK) {
? ? ? ? ? ?if (!isExit) {
? ? ? ? ? ? ? ?Toast.makeText(SeriesActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ?isExit = true;
? ? ? ? ? ? ? ?mHandler.sendEmptyMessageDelayed(EXIT, DELAY_TIME);
? ? ? ? ? ? ? ?return true;
? ? ? ? ? ?} else {
? ? ? ? ? ?}
? ? ? ? }
? ? ? ? return super.onKeyDown(keyCode, event);
? ? ? }
? ? ? @Override
? ? ? public boolean handleMessage(Message msg) {
? ? ? ? ? ?switch (msg.what) {
? ? ? ? ? ? ? ?case EXIT:
? ? ? ? ? ? ? ? ? ?isExit = false;
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ?}
? ? ? ? ? ?return false;
? ? ? ?}
? ?⑤ 横竖屏切换的activity
? ? ?前一个activity执行到destroy,后一个activity从oncreate()开始执行到onResume();
? ?⑥ Activity之间的跳转
? ? ?前一个activity执行到stop(), 后一个activity从oncreate()开始执行到onResume(),按回退键销毁;



友情链接: