您的位置:首页 > 其它

使用activity中遇到的问题及解决办法

2016-07-12 21:32 435 查看

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息