Activity
创建第二个Activity
- 在配置清单中配置
有下列代码
<intent-filter> <action android:name ="android.intent.action.Main>" <category android:name="android.intent.category.LAUNCHER" <intent-filter>
Activity跳转
隐式跳转
清单文件中配置
<activity android:name="com.itheima.activityIntent.SecondActivity" > <intent-filter > <action android:name="com.itheima.second"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
其中的action是自定义的。而Java代码中,需要配置。
public void click1(View v){
Intent intent =new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:15295740527"));
startActivity(intent);
}
public void click2(View v){
Intent intent =new Intent();
intent.setAction("com.itheima.second1");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(Uri.parse("heima1:sb"), "text/username");
startActivity(intent);
}
public void click3(View v){
Intent intent=new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);
}
public void click4(View v){
Intent intent =new Intent();
intent.setClassName("com.android.contacts", "com.android.contacts.activites.DialtactsActivity");
startActivity(intent);
}
public void click4(View v){
Intent intent =new Intent();
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
startActivity(intent);
}
public void click5(View v){
Intent intent =new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
应用场景
- 显式意图:启动同一个应用中的Activity
- 隐式意图:启动不同应用中的Activity
- 在启动效率上,隐式效率远小于显式效率。
- 如果有多个Activity与意图设置的Action匹配,则会弹出一个对话框,包含所匹配的所有Activity
Activity携带数据
主Activity:
new Intent().putExtra(key,value); 或者:用bundle封装 Bundle bundle =new Bundle(); bundle.putString(key1,value1); bundle.putString(key2,value2); new Intent().putExtras(bundle); startActivity(intent);
跳转Activity
Intent intent =getIntent(); intent.getStringExtra(key); 相应的接收bundle Bundle bundle=intent.getExtras(); String s1=bundle.getString(key1); String s2=bundle.getString(key2);
7大生命周期方法
oncreate onstart onResume onpause onstop ondestroy onrestart
4大启动模式
- standard标准模式 后进先出
- singleTop 单顶模式 如果此Activity在栈顶时,则不能再此启动此类Activity 对于需要考虑用户体验时,需要设置,例如浏览器的书签,短信页面。
- singleTask 单栈模式 如果此Activity存在栈中,再次启动时则返回到该Activity 对于消耗资源很多的Activity,需要设置,例如网页
- singleInstance 单例模式,创建一个新栈,且只有该Activity。 例如:拨号界面。10个应用启动拨号界面,实际情况只是将该Activity所在的栈移动前台。
内存不足
- 先杀死后台Activity所在进程,继而杀死暂停状态的Activity。
- 如果有多个后台进程,采用最近最少使用算法(LRU)
横竖屏切换
横竖屏切换时会销毁重新加载新的布局文件,可以通过写死方向,不允许切换
android:screenOrientation=”portrait”
android:screenOrientation=”landscape”通过下面代码,可以让屏幕允许切换,但不用销毁当前Activity。
配置文件中
android:screenOrientation="orientation| keyboardHidden |screenSize"
- 或者onCreate方法中
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);