当前位置:  编程技术>移动开发
本页文章导读:
    ▪线程-BlockingQueue        线程--BlockingQueue 特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,.........
    ▪ Spin 字体高亮 色彩等        Spin 字体高亮 颜色等   public class MainAtivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView txtInfo = new TextView(this); SpannableStringBuilder ss = null; f.........
    ▪ APK签字       APK签名 刚学android,在windows xp上开发的,不会makefile,ndk还没仔细研究,或许对一些初学者有用。一、Android Apk签名Apk签名首先要有一个keystore的签名用的文件。keystore是由jdk自带的工具keyto.........

[1]线程-BlockingQueue
    来源: 互联网  发布时间: 2014-02-18
线程--BlockingQueue
特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间时才会被唤醒继续操作。可以随意指定队列的大小容量,当容量满时,生产者进入等待状态,当容量空时,消费者等待。




BlockingQueue定义的常用方法如下:

1)add(anObject):把anObject加到BlockingQueue里,如果BlockingQueue可以容纳,则返回true,否则抛出异常。

2)offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false。

3)put(anObject):把anObject加到BlockingQueue里,如果BlockingQueue没有空间,则调用此方法的线程被阻断直到BlockingQueue里有空间再继续。

4)poll(time):取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数规定的时间,取不到时返回null。

5)take():取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的对象被加入为止。




BlockingQueue有四个具体的实现类,根据不同需求,选择不同的实现类:

1)ArrayBlockingQueue:规定大小的BlockingQueue,其构造函数必须带一个int参数来指明其大小。其所含的对象是以FIFO(先入先出)顺序排序的。

2)LinkedBlockingQueue:大小不定的BlockingQueue,若其构造函数带一个规定大小的参数,生成的BlockingQueue有大小限制,若不带大小参数,所生成的BlockingQueue的大小由Integer.MAX_VALUE来决定。其所含的对象是以FIFO顺序排序的。

3)PriorityBlockingQueue:类似于LinkedBlockingQueue,但其所含对象的排序不是FIFO,而是依据对象的自然排序顺序或者是构造函数所带的Comparator决定的顺序。

4)SynchronousQueue:特殊的BlockingQueue,对其的操作必须是放和取交替完成的。




LinkedBlockingQueue和ArrayBlockingQueue比较起来,它们背后所用的数据结构不一样,导致LinkedBlockingQueue的数据吞吐量要大于ArrayBlockingQueue,但在线程数量很大时其性能的可预见性低于ArrayBlockingQueue。




BlockingQueue是一种特殊的Queue,若BlockingQueue是空的,
从BlockingQueue取东西的操作将会被阻断进入等待状态直到BlocingkQueue进了新货才会被唤醒。同样,如果BlockingQueue是满的任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有新的空间才会被唤醒继续操作。


BlockingQueue提供的方法主要有:
1)add(anObject): 把anObject加到BlockingQueue里,如果BlockingQueue可以容纳返回true,否则抛出IllegalStateException异常。
2)offer(anObject):把anObject加到BlockingQueue里,如果BlockingQueue可以容纳返回true,否则返回false。
3)put(anObject):把anObject加到BlockingQueue里,如果BlockingQueue没有空间,调用此方法的线程被阻断直到BlockingQueue里有新的空间再继续。
4)poll(time):取出BlockingQueue里排在首位的对象,若不能立即取出可等time参数规定的时间。取不到时返回null。
5)take():取出BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到BlockingQueue有新的对象被加入为止。


    
[2] Spin 字体高亮 色彩等
    来源: 互联网  发布时间: 2014-02-18
Spin 字体高亮 颜色等



 

public class MainAtivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
TextView txtInfo = new TextView(this); 
SpannableStringBuilder ss = null; 
for (int i = 0; i < 2; i++) { 
ss= new SpannableStringBuilder("红色打电话斜体删除线绿色下划线背景"); 
       ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new URLSpan("tel:4155551212"), 2, 5, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new StrikethroughSpan(), 7, 10, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new UnderlineSpan(), 10, 16, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 15, 
               Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       ss.setSpan(new  BackgroundColorSpan(Color.rgb(124, 156, 215)), 15, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
       txtInfo.append(ss); 
}              
       txtInfo.setMovementMethod(LinkMovementMethod.getInstance()); 
       setContentView(txtInfo); 

} 
} 

 

 


    
[3] APK签字
    来源: 互联网  发布时间: 2014-02-18
APK签名
刚学android,在windows xp上开发的,不会makefile,ndk还没仔细研究,或许对一些初学者有用。

一、Android Apk签名
Apk签名首先要有一个keystore的签名用的文件。
keystore是由jdk自带的工具keytool生成的。
具体生成方式参考:
开始->运行->cmd->cd到你安装的jdk的目录里,我的是C:\Program Files\Java\jdk1.6.0_10\bin
然后输入:
keytool -genkey -alias asaiAndroid.keystore -keyalg RSA -validity 20000 -keystore asaiAndroid.keystore
-alias 后面跟的是别名这里是 asaiAndroid.store
-keyalg 是加密方式这里是RSA
-validity 是有效期 这里是20000
-keystore 就是要生成的keystore的名称 这里是asiAndroid.keystore
然后按回车键
按回车后首先会提示你输入的密码:这个在签名时要用的,要记住
然后会再确认你的密码。
之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码(CN)等。

开始签名。
在 C:\Program Files\Java\jdk1.6.0_10\bin 还提供一个工具 jarsigner.exe
运行命令给APK签名:
jarsigner -verbose -keystore asaiAndroid.keystore -signedjar Lotteryonline_signed.apk LotteryOnline.apk asaiAndroid.keystore
-keystore: keystore的名称
LotteryOnline_signed.apk: 签名后的APK
LotteryOnline.apk: 签名前的APK
然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。


二、eclipse源码编译,无需用make来编译(android源码目录<D:\myandroid_mx27>):
1、首先,AndroidManifest.xml中manifest节点中加入android:sharedUserId="android.uid.system"这个属性

2、用eclipse编译出apk(ClockSetting.apk)文件,但这个文件不能用,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件

3、使用当前android系统(android系统可能不同)的platform密钥来重新给apk文件签名(可能还未用用户米要签名)。
首先,找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。
然后,用Android提供的SignApk工具来签名,signapk的源代码是在"build\tools\signapk"下,这时得为下面的编译工作做些准备:
<1>、编译jar
命令行cd到signapk.java代码目录下,
javac signapk.java
获取SignApk$SignatureOutputStream.class和SignApk.class

建立目录s\com\android\signapk,将两个class文件放入目录下
jar cvfm signapk.jar SignApk.mf -C s\ .
注意:"s\"后面的"."前面有空格
生成signapk.jar文件,得到了Android提供的签名程序signapk.jar
<2>、用目标系统的platform密钥签名
将platform.pk8和platform.x509.pem文件复制到"D:\myandroid_mx27\build\tools\signapk"目录下,即signapk.jar和SignApk.mf所在的目录。
java -jar signapk.jar platform.x509.pem platform.pk8 D:\ClockSetting.apk D:\ClockSettingSigned.apk
我的未签名(ClockSetting.apk)和已签名(ClockSettingSigned.apk)apk文件都放在D盘,这样就得到了用Android源码编译的文件。

<3>、打开真机,安装:
adb connect IPort (IP为真机IP地址,Port为端口)
adb install D:/ClockSettingSigned.apk


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3