android之旅12 activity之间的跳转与生命周期
2015-12-27 17:04
513 查看
自定义的第二个Activity
自定义第二个Activity的布局文件sec.xml<TextView android:text="第二个Activity" />
在manifest中需要配置第二个Activity
<application .....> <activitiy android:name="packageName.XxxActivity" android:label="@string/app_name" -----快捷图标名称 android:icon="@drawble/ic_launcher" ---快捷图标图片 > <intent-filter> -----------显示快捷图标 <action --定义动作, 隐式跳转使用 android:name="anyname.is.possible"/> <category --定义附加信息,写死即可 android:name="android.intent.category.DEFAULT"/> <data android:scheme="also.anything.is.possible" --定义格式 android:mimeType="text/pwd" -- 定义数据用途的类型 /> </intent-filter> <intent-filter> ---- 可以配置多个 ....... </intent-filter> </activity> <activity android:name="xxxx" .... > </activity> </application>
Activity之间的跳转
public class SecondActivity extends Activity{ public void onCreate(){ setContentView(R.layout.sec); //对应sec.xml Intent intent = getIntent(); //可以由获取数据 } public void onClick(View v){ Intent intent = new Intent(); //显示跳转,指定类名 intent.setClass(this, SecondActivity.class); //显示跳转也可以指定包名+类名, 当使用其他人的Activity intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity"); startActivity(intent); } //隐式跳转,不同应用中使用。同一个应用中尽量使用显示,效率更高 public void onClick4(View v){ Intent intent = new Intent(); // ACTION和category,data,type都匹配才能匹配到Activity // 当有多个应用时候会让用户选择一个 intent.setAction("anyname.is.possible"); //不写也是Default intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData( Uri.parse("also.anything.is.possible:"+"xxoovv") ); intent.setType("text/pwd"); //如果data和type同时定义必须使用如下方法 intent.setDataAndType(/*参数和上面一样*/); startActivity(intent); } }
生命周期
执行到某个状态则执行onXxx方法,比如onCreate,onStart方法启动某个Activity时,经历:create–>start–>resume
create时机为Activity创建,start能看到但没焦点(无法交互,比如长按HOME键时出现的状态),resume获得焦点可以交互
返回键Activity被销毁时:pause—>stop–>destroy
pause对应start,能看到无焦点; stop对应create,不可见,此时称为后台Activity;destroy对象销毁
按HOME键执行pause和stop,没有destroy
没有Destroy,会经历restart–>start–>resume
Activity启动第二个Activity: 第一个pause–>第二个(没被销毁时)restart–>第二个start—>第二个resume—>第一个stop
Activity启动第二个Activity: 第一个pause–>第二个(被销毁时)create–>第二个start—>第二个resume—>第一个stop—>第一个destroy(按返回键才会执行)
Activity启动第二个Activity:如果第二个样式透明,则第一个还能看到,那么第二个resume执行完毕后不会执行第一个的stop方法,此时界面回到第一个Activity时候只会执行第一个的resume方法(第二个该怎么执行还是怎么执行的)
Activity失去焦点及以上,如果内存不够都可能被杀死
相关文章推荐
- Android M 新的运行时权限开发者需要知道的一切
- android偏好设置
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法
- Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
- Android用TabLayout实现类似网易选项卡动态滑动效果
- Android 中 Intent.Action
- 使用Bmob ---数据服务(提交数据,查询数据)
- Android 系统名字、版本、API level的对应关系
- Android 报错:Error: Apostrophe not preceded by \ (in ... ...)
- 关于『65535问题』的一点研究与思考
- Android中MediaButtonReceiver广播监听器的机制分析
- Twitter License for Android
- Android给控件自定义边框和阴影
- android SharedPreferences加密(高级) (AES+base64+PBE)
- Android教程之MediaStore
- Android handler 可能会造成内存泄露
- 在android应用上直接访问数据库
- android material design 相关使用指导
- Android:Asynctask简单使用
- Android SDK Manager国内无法更新的解决方案