过几天后要考核面试了,所以自己想写下自己的android复习过程,方便以后再有考核面试时,看看博客就OK了!
首先,先从Activity开始:
先写个目录:
Activity
(1)生命周期
(2)启动模式
(3)Intent(显式,隐式意图)
(4)Activity之间的数据传递
一,生命周期
用一张图,就能描述清楚了。
图片是自己做的!哦也!
还有增加一个内容:
Activity失去焦点时,首先必然会执行onPause()方法,因此项目中需要保存数据时,可以在onPause()方法中保存。(抄书本的)
注意:手机在横竖屏时,Activity会销毁重建,所以如果不希望在横竖屏切换时,Activity销毁重建,可以在清单文件AndroidMainifest文件中配置这个:
<activity android:name=".Activity02"
android:configChanges="orientation|keyboardHidden|screenSize" />
如果想要写死横竖屏的话,就这样添加代码:
<activity android:name=".Activity02" android:screenOrientation="portrait" /> <!-- 表示竖屏 -->
<activity android:name=".Activity02" android:screenOrientation="landscape" /> <!-- 表示横屏 -->
二,启动模式
什么事启动模式呢? 我书本上第58页有,所以我只要看一下书本就行了!
(看到这里的网友别打我,我是特别懒惰的)
但树我要说下:Activity有4种启动模式:
standard,singleTop,singleTask,singleInstance。
三,Intent(显式,隐式意图)
额。。。显示意图我是不说了,It is so easy ! 隐式意图的话,我说一下:就是隐式意图!
如果我想打开照相功能的Activity,但树我不知道它的Activity叫什么,怎么办?
很简单! 我们知道它的一些Activity的配置就行了,比如说以下的这个Activity
<activity android:name=".Activity02" >
<intent-filter>
<action android:name="org.com.abc" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我想打开这个Activity,就可以用下面代码:
Intent intent = new Intent();
intent.setAction("org.com.abc");
startActivity(intent);
然后就可以打开了!谢谢!
四,Activity之间的数据传递
Activity之间的数据传递是用Intent来进行的。
String data = "hello";
Intent intent = new Intent(MainActivity.this,Activity02.class);
intent.putExtra("hello",data);
startActivity(intent);
在
Activity02中接受到数据
Intent intent = getIntent();
String datas = intent.getStringExtra("hello");
还有另外一种传递数据的Way
Bundle bundle = new Bundle();
bundle.putString("name","小白");
bundle.putInt("age",10);
Intent intent = new Intent(Activity02.this,MainActivity.class);
intent.putExtras(bundle);
startActivity(intent);
然后在
MainActivity中取出数据,就看以下代码:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("name");
ActivityA——>ActivityB,然后ActivityB——>回传给ActivityA
就是从ActivityB中拿一些数据回给ActivityA
代码如下:
在MainActivity中
在MainActivity中
Intent intent = new Intent(MainActivity.this,Activity02.class);
startActivityForResult(intent,1);
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1){ String num = data.getStringExtra("1"); show.setText(num+""); } }
然后在Activity02中
最后再补一句:Intent intent = new Intent(); intent.putExtra("1","1"); setResult(1,intent); finish();
Activity是Android四大组件之一,负责管理Android应用程序的用户界面
然后再补几个方法
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { Toast.makeText(MainActivity.this,"按键被按下!",Toast.LENGTH_SHORT).show(); return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Toast.makeText(MainActivity.this,"按键被弹起!",Toast.LENGTH_SHORT).show(); return super.onKeyUp(keyCode, event); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); Toast.makeText(MainActivity.this,"获取坐标X,Y",Toast.LENGTH_SHORT).show(); return super.onTouchEvent(event); }