8月 062017
 

volatile保证共享变量在多程中的可见性

即一个共享变量在线程1中被修改在,在线程2中读取这个变量时,立即得到最新的值

volatile不能保证变量的原子性

比较经典的一个例子就是用一个boolean变量判断线程是否停止的例子,如下:

如果isrunning不加volatile修饰,thread2一直无法停止,因为无法获取到isrunning的更新状态。

volatile修饰对象

被volatile修饰的对象,当对象内所有成员的值变化时都会更新到主存中, 以确保成员的可见性?(未亲自测试过)

一些其他的见解:

摘自:https://bbs.csdn.net/topics/390413948?page=1

 

 Posted by on 2017-08-06

adb monkey支持的事件

 分类:Android, Java 阅读 (1,674)  No Responses »
7月 252017
 

关于monkey脚本所支持的事件,请参考android源码下的development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java

如下:

 

 Posted by on 2017-07-25
7月 192017
 

滚动到底部:

滚动到顶部:

 

7月 142017
 

下面是我曾经使用过的感觉不错的Android开源框架,零零星星会做一些总结,如果大家有好的观点欢迎留言。

1. greenDao – 数据库对象关系映射(ORM)

github地址:https://github.com/greenrobot/greenDAO

2. logger – 日志记录类

github地址:https://github.com/orhanobut/logger

3. gson – json数据解析工具

github地址:https://github.com/google/gson

4. okhttp – 网络请求类

https://github.com/square/okhttp

 Posted by on 2017-07-14

Android中的assets目录

 分类:Android, Java 阅读 (1,007)  Android中的assets目录已关闭评论
6月 252017
 

放在res目录下的资源会生成id,放assets的不会…

存放一些二进制外挂文件,和res下的raw作用差不多。

在使用Android Studio开发时,放在下面这个位置src/main/assets

 Posted by on 2017-06-25
6月 182017
 

1. 打开菜单Android Studio->Preferences…

2. 打开左侧导航列表Tools->External Tools

3. 点击增加外部工具按钮,在弹出的按钮输入下图中的内容:

4. 补充:去掉Open console for tool output前面的对勾

5.  点击ok完成后,我们在文件列表或者代码编辑器上方的文件名上右键,在菜单中选择”External Tools”,然后选择新建的工具就可以方便的在文件管理器中查看文件了

 Posted by on 2017-06-18
6月 162017
 

1. 打开菜单File->Settings

2. 打开左侧导航列表Tools->External Tools

3. 点击增加外部工具按钮,在弹出的按钮输入下图中的内容:

4. 补充:去掉Open console前面的对勾

5.  点击ok完成后,我们在文件列表或者代码编辑器上方的文件名上右键,在菜单中选择”External Tools”,然后选择新建的工具就可以方便的在文件管理器中查看文件了

 Posted by on 2017-06-16
6月 062017
 

  博文背景:博主要实现app的左侧导航按钮功能,因为要实现某个导航按钮被选中的效果,所以没有使用ListView,而是用的RadioGoup来实现.好,RadioGroup嵌套多个RadioButton很简单的实现了导航列表的功能.另外一个需求是给导航按钮们增加分隔线,博主首先使用RadioButton的drawableTop,分隔线不在最顶部,而且水平不居中,这个属性肯定是不行。然后比较笨的方法就是插入多个ImageView,设置图片为分隔线,但是……导航按钮多的话,这样做真的很麻烦。

  于是博主开始研究RadioGroup的属性,发现有一个divider属性,这在ListView里是分隔线的意思,于是给RadioGroup设置这个属性,运行程序,分隔线不显示,心想RadioGroup应该不支持这个属性,毕竟通常情况下divider是对List形式组件才有效的。再想想要加n个ImageView实在不甘心,度娘了一下,原来要再加个showDivider属性。

  showDivider有三个可选项,beginning、middle、end,分别对应最开始的分隔线,各RadioButton中间的分隔线,最结尾的分隔线。我们可以如下设置:

  不是true或者false哦 ;-) 

  下面是一个完整的Activity部局的xml代码,在你的res/drawable中放一个叫timg.png的图片,然后把下面代码粘贴到你的Activity的xml文件中,运行一下就可以看到效果了。

  注意事项:

  1. LinearLayout同样支持此属性,可能类似组件都支持
  2. 如果最开始或者最结尾的组件的visiblity为gone,则showDivider的beginning和end的选项无效
4月 122017
 

如下图,第二行的ImageView和TextView的layout_width属性都为wrap_content,layout_weight都为1,所以两者显示的权重并不是1:1

第四行ImageView和TextView的layout_width属性都为0dp,layout_weight都为1,所以两者显示的权重是1:1

笔者猜测应该是layout_content的值被优先计算,然后再计算layout_weight的值,所以造成第二行的问题

xml部局如下:

 

 

 Posted by on 2017-04-12
4月 122017
 

部局的xml如下:

部局的预览图如下

音乐标题(光辉岁月)的ellipsize属性为marquee,当设置专辑下面的当前播放进度的文本时音乐标题的marquee总是重新播放,应该是进度TextView的文本改变影响了父级的LinearLayout(按道理来说不应该影响的)。

解决办法:为父级的LinearLayout增加android:baselineAligned=”false”属性

 Posted by on 2017-04-12