Android开发常见bug及解决方法 (一)
2014-01-15 10:03
453 查看
1、音频播放时,一定要思考异常处理、如其它事件播放音频的打断处理;
2、下载资源等异步操作的监听器实现时,一定要对用到的所有成员变量判空
当界面销毁时,mHandler 可能销毁了,但是监听器可能没有移除,接着就是崩溃。
3、android各机型实现ListView时,长按item可能会有某种颜色的背景,可能不符合界面风格。在布局中使用:
长按时显示透明背景,保持风格一致。
4、使用android提供的API时,一定要充分考虑判空,举例说:
5、在Android的Activity中调用finish方法,尤其是onCreate中判断条件不符退出Activity时,一定不要忘了在finish方法后加上return:
否则在onCreate的后续操作还会执行,简而言之,finish方法并非调了Activity就销毁。这样后续的初始化界面等操作可能会导致崩溃。
另外在onDestory中释放资源时,一定不要忘了判空,因为this.finish会调用onDestory,这时可能类成员变量尚未初始化,会导致崩溃。
6、如果按键有提示音,则不要忘了关闭系统的按键音效,关闭方法:
7、界面上的Handler销毁,由于Handler可能有延迟处理的消息,如果此时界面销毁了,很可能会出现崩溃,正确的处理技巧为:
8、为了增加界面交互的易用性,当界面需要播放音乐时,最好建议系统的音量调节在该界面调整为音乐模式,保证用户可以便捷的调整音量,方法为:
这样每款手机的音量调节在该Activity都会调节音乐模式音量。(这样做是因为部分手机在每个页面都调节铃声模式的音量)
2、下载资源等异步操作的监听器实现时,一定要对用到的所有成员变量判空
IDownloadResultListener mListener = new IDownloadResultListener() { @Override public void onResult(int errorCode) { mHandler.sendEmptyMessage(MSG_WHAT); } };
当界面销毁时,mHandler 可能销毁了,但是监听器可能没有移除,接着就是崩溃。
3、android各机型实现ListView时,长按item可能会有某种颜色的背景,可能不符合界面风格。在布局中使用:
android:listSelector="@android:color/transparent"
长按时显示透明背景,保持风格一致。
4、使用android提供的API时,一定要充分考虑判空,举例说:
Collections.sort(listMsgs, mComparator);listMsgs为空或者mComparator为空,则崩溃。
5、在Android的Activity中调用finish方法,尤其是onCreate中判断条件不符退出Activity时,一定不要忘了在finish方法后加上return:
this.finish(); return;
否则在onCreate的后续操作还会执行,简而言之,finish方法并非调了Activity就销毁。这样后续的初始化界面等操作可能会导致崩溃。
另外在onDestory中释放资源时,一定不要忘了判空,因为this.finish会调用onDestory,这时可能类成员变量尚未初始化,会导致崩溃。
6、如果按键有提示音,则不要忘了关闭系统的按键音效,关闭方法:
view.setSoundEffectsEnabled(isEnabled);
7、界面上的Handler销毁,由于Handler可能有延迟处理的消息,如果此时界面销毁了,很可能会出现崩溃,正确的处理技巧为:
private Handler mHandler = new Handler() { public void handleMessage(Message msg) { if(MainActivity.this.isFinishing()) { return; } //TODO message operations }; };onDestory中:
if(null != mHandler) { mHandler.removeCallbacksAndMessages(null); mHandler = null; }保证界面销毁时,移除所有Handler需要未处理的消息和Runnable等。
8、为了增加界面交互的易用性,当界面需要播放音乐时,最好建议系统的音量调节在该界面调整为音乐模式,保证用户可以便捷的调整音量,方法为:
@Override protected void onResume() { // 增加媒体音量调节功能 setVolumeControlStream(AudioManager.STREAM_MUSIC); super.onResume(); }
这样每款手机的音量调节在该Activity都会调节音乐模式音量。(这样做是因为部分手机在每个页面都调节铃声模式的音量)
相关文章推荐
- Android开发常见问题及解决方法小结
- [置顶] android开发 app闪退后fragment重叠bug解决方法,推荐使用第二种方法,完美解决问题
- androidpn-client 常见BUG解决方法
- androidpn-client 常见BUG解决方法
- Eclipse搭建Android开发环境之ADT安装常见错误及解决方法
- [Android开发常见问题-11] Unable to execute dex: Multiple dex files define 解决方法
- 收集Android实际开发中的bug总结与解决方法(第三节)
- Android开发Git:代码冲突常见解决方法
- Android开发常见问题及解决方法
- Android开发常见问题及解决方法
- Android ROM开发(二)——ROM架构以及Updater-Script脚本分析,常见的Status错误解决的方法
- android中httpclient和HttpURLConnection优缺点和常见bug解决方法
- android下前端开发诡异bug记录&解决方法
- Android开发常见问题及解决方法
- [Android开发常见问题-11] Unable to execute dex: Multiple dex files define 解决方法
- Android开发环境搭建及常见问题解决方法
- Android实际开发中的bug总结与解决方法(一)
- Android实际开发中的bug总结与解决方法(三)
- Android开发由eclipse转Android Studio中一些常见出错问题解决方法
- android开发bug解决方法或者studio使用问题汇总