Android 应用开发<一> Activity一>
活动开始
- 重载 onCrate 方法,虽然在创建时Android studio 已经自动帮我们完成了,还是得说一下。
@Override
protected void onCreate(Bundle savedInstanceState) {
//调用父类的onCreate方法,必须,不然会发生异常
super.onCreate(savedInstanceState);
// 加载一个布局,比如我有一个 activity_main.xml 要用于设置为当前布局
setContentView(R.layout.activity_main);
}
(1)在Activity启动前,尽量少做。
(2)对于布局比较复杂的时候,可以考虑不要一次性全部加载上,动态加载是一个好的办法。
(3)对于及时需要的数据,加载起来耗时的又有异常危险的,一定记得开辟一个线程来做这些动作,千万记得不要做阻塞主线程(UI线程)的任何事情。
(4)对于特殊情况下,Activity启动确实需要大量工作时候,可以考虑先加载一个简单的布局(或是Activity)来过渡.。
(5)所有的目的都是让你要启动的组件尽快上场,而不是以画好妆为主,这样的话客人会等不及的,顾客就是上帝。
- 注册 AndroidManifest.xml。所有的 activity 都需要在 AndroidManifest.xml 的 application 标签内进行注册
<activity android:name=".MainActivity">
<!-- intent-filter 标签中告知了主活动是哪个,这样子点击 app 就知道该启用哪个作为主 activity -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 使用 Intent 在活动中切换。
显式intent
//显式 intent Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivities(intent);
隐式intent,在 AndroidManifest.xml 中注册,action 匹配规则为只要Intent中包含其中一个action就会启动相应的 activity,category 的匹配规则是只有全包含才能启动,在 new Intent(Intent.ACTION_START);中,会默认带有 android.intent.category.DEFAULT,故需要添加
<intent-filter> <action android:name="com.hooltech.chapter2_test1.ACTION_START"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
Intent intent = new Intent(Intent.ACTION_START); startActivity(intent);
隐式的活动有很多种用法,比如可以使用其他应用程序的功能都是通过隐式 intenet 来实现的。
活动的生命周期
活动的启动方式
standard、singleTop、singleTask、singleInstance 四种启动模式,在 AndroidManifest.xml 中通过 给