2017年9月 bug总结
来源:互联网 发布:linux 查看日志文件 编辑:程序博客网 时间:2024/05/17 23:34
1.延迟加载的流程
最近在公司看见这么一段代码(做的是扫描蓝牙,并且链接的,但是业务有点复杂,我就不贴业务逻辑的代码了,只看这个延迟加载。)
private void scanLeDevice(final boolean enable) { mHandler.postDelayed(new Runnable() { @Override public void run() { Log.i("robin", "scanLeDevice-->run: "); } }, 5000); try { Log.i("robin", "scanLeDevice:-->try: "); mTimer = new Timer(); mTimer.schedule(new TimerTask() { @Override public void run() { Log.i("robin", "scanLeDevice:-->try:-->schedule:-->run "); Handler h = new Handler(Looper.getMainLooper()); if (!mProgressed) { h.post(new Runnable() { public void run() { Log.i("robin", "scanLeDevice:-->try:-->schedule:-->run -->post"); if(tryTimes != 5){ tryTimes++; scanLeDevice(true); } else { tryTimes = 1; } } }); } } }, 5000); } catch(Exception e){ e.printStackTrace(); Log.w(TAG,"Timer was canceled"); } }
上面的代码我已经把业务逻辑的代码剥离出去了,主要意思大家都懂。
log结果如下:(注意时间!!)
09-13 09:25:39.476 6891-6891/? I/robin: scanLeDevice:-->try: 09-13 09:25:44.476 6891-7150/? I/robin: scanLeDevice:-->try:-->schedule:-->run 09-13 09:25:44.476 6891-6891/? I/robin: scanLeDevice-->run: 09-13 09:25:44.486 6891-6891/? I/robin: scanLeDevice:-->try:-->schedule:-->run -->post 09-13 09:25:44.496 6891-6891/? I/robin: scanLeDevice:-->try: 09-13 09:25:49.496 6891-7162/? I/robin: scanLeDevice:-->try:-->schedule:-->run 09-13 09:25:49.496 6891-6891/? I/robin: scanLeDevice-->run: 09-13 09:25:49.506 6891-6891/? I/robin: scanLeDevice:-->try:-->schedule:-->run -->post 09-13 09:25:49.506 6891-6891/? I/robin: scanLeDevice:-->try: 09-13 09:25:54.506 6891-7163/? I/robin: scanLeDevice:-->try:-->schedule:-->run 09-13 09:25:54.516 6891-6891/? I/robin: scanLeDevice-->run: 09-13 09:25:54.516 6891-6891/? I/robin: scanLeDevice:-->try:-->schedule:-->run -->post 09-13 09:25:54.516 6891-6891/? I/robin: scanLeDevice:-->try: 09-13 09:25:59.516 6891-7166/? I/robin: scanLeDevice:-->try:-->schedule:-->run 09-13 09:25:59.536 6891-6891/? I/robin: scanLeDevice-->run: 09-13 09:25:59.536 6891-6891/? I/robin: scanLeDevice:-->try:-->schedule:-->run -->post 09-13 09:25:59.536 6891-6891/? I/robin: scanLeDevice:-->try: 09-13 09:26:04.536 6891-7167/? I/robin: scanLeDevice:-->try:-->schedule:-->run 09-13 09:26:04.546 6891-6891/? I/robin: scanLeDevice-->run: 09-13 09:26:04.556 6891-6891/? I/robin: scanLeDevice:-->try:-->schedule:-->run -->post
2.android 6.0以上AlertDialog的按钮无法小写。
有的童鞋肯定碰到过用原生的AlertDialog的时候,用到如下代码
builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { XXX } });
运行之后发现竟然全变成大写了,而低版本的手机没有这个问题
解决方案:
在style文件里面:
新建style:
<style name="DialogButton" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> <item name="textAllCaps">false</item> </style>
找到AppTheme,没有就新建一个AppTheme的style,具体不多说,
然后在AppTheme里面加上这一句
<item name="buttonBarButtonStyle">@style/DialogButton</item>
3.webview 无法监听点击按钮的url
最近有一个业务是,点击webview的一个按钮,不管当前在那个页面都关闭webview,有的同学肯定想到了webview.setWebViewClient里面override的这两个方法
shouldOverrideUrlLoading
onPageFinished
确实,只要有新的url触发,这两个监听都会触发。但是,后台给我的链接,确无法触发。
举个例子:
当前页面url是:www.baidu.com
点击返回到首页的按钮的url是:www.baidu.com#back_to_app
这里首先要说一下#的含义:不触发网页重载,单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页。参考文章。所以不会重新加载,也就不会触发shouldOverrideUrlLoading,onPageFinished这两个方法。然后我再stack overflow上面找到了这样一篇文章:stack overflow。里面有这样一段代码:
Use a hash in your final URL like http://domain.com/thanks.html#closeWebview then watch URL.On Android :mWebview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (url.endsWith("#closeWebview")){ mWebview.setVisibility(View.GONE); } }});
onPageFinished,当前页面加载完毕(注意,这个地方的加载不是重新加载,只能说是改变),就会触发这个监听,成功监听到www.baidu.com#back_to_app。这时候就可以拿着这个去判断,然后写自己的业务逻辑了。
- 2017年9月 bug总结
- 2017年7月 bug总结
- 2017年8月 bug总结
- BUG总结之Maven(2017.3~.4月)
- 2013年9月10月总结
- 2017年9月英语总结
- 9月-月总结
- 2017年7月总结
- 2017年11月总结
- 2017年11月总结
- 改bug总结—2015年8月于nice实习
- 改bug总结—2015年11月于nice实习
- 改bug总结—2015年12月于nice实习
- 改bug总结—2016年2月于nice实习
- 2017年9月1日-2017年9月3日训练总结
- NOIP2017暨2017年9月——11月学习总结
- 2017年3月4月无人机航空摄影总结
- 2010年9月到12月个人总结回忆
- 关于datagrid 垂直滚动条设置
- C#读取excel文件,生成json
- abap中VIEW_MAINTENANCE_GIVEN_DATA的用法
- junit 单元测试报错:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
- 交叉表格sql语句
- 2017年9月 bug总结
- LeetCode Identical Binary Tree 相同二叉树
- js动态添加带参数的点击事件
- 多设备跨平台,H5天然的便携性
- table表格 td设置固定宽度
- Excel导入数据库回滚
- jfinal根据表创建get set 方法
- 面试知识点总结——网络篇
- Django教程之十一-----模型