activity的使用
写在前文的话,最近的项目里用到的基本上全是Activity,在使用的时候会出现很多小问题,在这里总结一下。方便以后自己掌握,同时希望也能帮助到需要帮助的人
- 我们都知道Activity是用户可视化的窗口,程序与用户交互都是依托于activity的,一旦程序中使用太多,我们在back时,很多时候不能得到我们想要的结果。这时我们可以操作的办法往往有各种各样的。
问题
- 在多个activity进行跳转,当点击物理按键返回时(程序中无返回按钮),这时会发现之前的界面一直存在(某些界面我们只需显示一次,然后关闭)
解决办法之一
- 深刻理解activity的启动模式(standard),在某些activity注册时设置相应的启动模式,可以得到部分解决
- 如:扫描二维码进入显示界面
现象:开始没有设置启动模式时,扫描进入,返回再次扫描进入,再返回进入,最终的结果是按返回键是程序一直在这两个界面之间跳转,进入几次就重复几次。
原因:我们创建一个activity时默认standard方式启动 - 解决办法:设置为singleTask方式启动,问题解决
<activity .ScanToDisplayActivity"
android:launchMode="singleTask"/>
问题
- 在多个activity进行跳转,在某个界面动态注册广播返回时,提示没有解除绑定
解决办法
深刻理解activity的生命周期,并不是每个生命周期方法在进入时都会调用的
*问题产生原因:在onResume()方法中注册广播,在onDestroy()中解绑
protected void onResume() {
// 注册广播
receiver = new MyReceiver();
filter.addAction(Constants.ACTION_ACCEPT);
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
// 解除绑定
super.onDestroy();
unregisterReceiver(receiver);
}
解决办法:在onResume()方法中注册(同上),在onPause()方法中解除绑定
protected void onPause() {
super.onPause(); unregisterReceiver(receiver);
}
解决收工,如果大家有什么高招请指教。
另附一关于activity四种启动模式的博客,多谢博主
(http://blog.csdn.net/knlnzhao/article/details/8005277)