总结4种线程中操作UI界面的方法
摘要:我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。方法一:Handler子线程调用Handler的sendMessage(message)发送事件。Java代码mHandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){//操作界面myText.setText(来自网络的信息);super.handleMessage(msg);}};Java
阅读全文
android Activity类的使用
摘要:在android开发中Activity非常重要,在一个应用中,每一个显示的屏幕都是一个Activity.所以学习android,必须要对Activity有一定的了解.在其他论坛中也有一些关于Activity的介绍,我在这里就想谈谈我对Activity学习的一些看法.首先Activity的生命周期很重要,Activity主要包含六个方法,分别是onCreate,onStart,onResume,onPause,onStop,onDestory.onCreate和onDestory对应.onStart和onStop对应,onResume和onPause对应.这几个函数大概是这样定义的,当启动一个A
阅读全文
Android 手机模拟游戏手柄(USB,C#,winio)
摘要:Android 手机模拟游戏手柄(USB,C#,winio)使用的知识点:Android服务器通过USB连接PC端,winio发送键盘消息,Socket编程,线程,Android多点触控先说下思路,首先在Android端开启服务器程序,然后在PC端开启一个服务器程序模拟发送键盘信息(C#编写)。手机和PC用USB连接,Android和PC的通信通过Socket完成。PC客户端程序:虽然有很多方法可以模拟发送键盘信息如:PostMessage,keybd_event等。这些都是将按键信息发送给系统的消息队列,然后再响应。但是很多游戏使用了DirectX技术绕过了系统的消息队列。我用了一个开源的项
阅读全文
C# PC客户端与Android服务端的Socket同步通信(USB)
摘要:需求: Android的apk获取手机信息,把结果发给PC client注意地方:1.android默认手机端的IP为“127.0.0.1” 2.要想联通PC与android手机的sokcet,一定要用adb forward 来作下端口转发才能连上socket. 3.使用socket通信,需要在mainfest.xml中添加permission: android.permission.INTERNET[java]view plaincopyRuntime.getRuntime().exec("adbforwardtcp:12580tcp:10086");Thread.sle
阅读全文
JAVA缓存 - Cache类
摘要:JAVA缓存有两种:一、文件缓存,是指把数据存储在磁盘上,可以XML格式,也可以序列化文件DAT格式还是其它文件格式。二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查。其代码如下:JAVA缓存 - Cache类public class Cache {private String key;//缓存IDprivate Object value;//缓存数据private long timeOut;//更新时间private boolean expired; //是否终止public Cache() {super();}public Cache(String key, Obj
阅读全文
Activity的四种加载模式
摘要:Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一种别有洞天的感觉。灵活的使用合适的加载模式,可以避免产生大量的重复的Activity,从而优化性能,减少系统资源消耗。 四种加载模式具体为:standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。singleTop: 检查是否已经存在了一个实例位于Activity Stack的顶部,如果存在就不产生新的实例,反之则调用Activity的newInstance..
阅读全文
设计模式
摘要:最近参加面试,总是被问到设计模式的问题。本人作为一个实用派,完全没搞懂作为一个功能的实现者,设计模式到底有多重要。当然,本人的意思不是说设计模式没用或者不该了解,但是这是一个度的问题,简单的模式,常用的模式,了解并会用,是必然的,但是其他模式,更深层的东西,也许留给架构师来理解更好。毕竟程序员不是架构师,要是程序员懂的知识和架构师一样多,那么,还要架构师来干什么呢? 于此苦闷中,特出来分享一下比较好的设计模式的介绍,以求朋友们能去应付那些蛋疼的笔试。 1、FACTORY——工程模式? 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦...
阅读全文
android代码加密(转)
摘要:自从接触了android开发之后,感觉代码都容易给一些工具反编译,比如我自己常用的dex2jar+jdgui,还有其它一些等等,所以下面就介绍下自己在实际应用的解决方案吧。1.针对要一些 要加密的代码,本人抽离出接口出来,比如,一个类A会实现类的接口IA,然而在程序中就会看到接口定义,而不会看到具体的实现类的代码,因为具体实现类的代码是通过动态加载的。2.加密具体实现类,这一步主要是加密实现类,过程是这样的,先导出实现类的jar包,然后通过dx工具转换格式,然后通过加密算法加密转换后的jar。3.通过jni解密和加载类,这一步主要是在C/C++解密程序中的需要加载的jar,然后通过 通过dex
阅读全文
百度android面试题(转)
摘要:1、Android dvm的进程和Linux的进程,应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。2、sim卡的EF文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的3、嵌入式操作系统内存管理有哪几种,各有何特性?页式,段式,段页,用到了MMU,虚拟空间等技术4、什么是嵌入式实时操作系统, Android操作系统属于实时操作系统吗?、嵌入式实时
阅读全文
浅谈Android五大布局(一)——LinearLayout、FrameLayout和AbsoulteLayout
摘要:Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。 LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多...
阅读全文
浅谈Android五大布局(二)——RelativeLayout和TableLayout
摘要:在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局)、FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍。RelativeLayout: RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below, android:layout_above等。子元素就通过这些属性和各自的ID配合指定位置..
阅读全文
wifi-direct
摘要:1.wifi-direct需要驱动支持的,你要找对应的芯片厂商(博通、realtek)拿驱动。2.wifi-direct android框架层是有源码的,这个你看android源码就好了。3.wifi-direct 应用层也是有sample的,在android sdk的WifiDirectDemo里面,只有4.0 以上的sdk才有。
阅读全文
Android模拟器中访问局域网地址
摘要:我们需要用到android-sdk开发包中adb shell进入Android SDK中的platform-tools目录,然后运行命令:adb shell然后再输入:setprop net.dns IP(输入你的局域网地址)getprop退出adb shellexit
阅读全文
Android Bitmap转字节数组后大小问题
摘要:很多Android开发者可能发现,将Bitmap转为字节数组可能文件大小和原始图片差异很大,代码如下1. 字节数组data保存Bitmap对象转为字节数组,处理代码: BitmapFactory.decodeByteArray(data, 0, data.length);2. 而第二种方法处理代码:ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);data2 = baos.toByteArray(); 这里其实很好理解,第
阅读全文
ExecutorService线程池
摘要:ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Runtime.getRuntime().availableProcessors();//获取当前系统的CPU 数目ExecutorService executorService =Executors.newFixedThreadPool(cpuNums *
阅读全文
Java:使用Executors创建和管理线程
摘要:1.类Executors此类中提供的一些方法有:1.1 public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。1.2 public static ExecutorService newFixedThreadPool(intnThreads)创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。1.3 public static ExecutorService newSingleThreadE
阅读全文
android 多线程
摘要:handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,却没有执行start()方法,所以runnable走的还是UI线程。1.如果像这样,是可以操作ui,但是run还是走在主线程,见打印出来的Log线程名字是main,说明是主线程。这就是为什么可以直接在run方法里操作ui,因为它本质还是ui线程handler.post(new Runnable(){ public void run(){ Log.e("当前线程:",Thread.currrentThread.getName());//这里打印de结果会是main setTit
阅读全文
android中Invalidate和postInvalidate的区别
摘要:Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。1,利用invalidate()刷新界面 实例化一个Handler对象,并重写ha..
阅读全文
Android的Window类 ——转
摘要:Android的Window类(一)Android的GUI层并不复杂。它的复杂度类似于WGUI这类基于布局和对话框的GUI,与MFC、QT等大型框架没有可比性,甚至飞漫魏永明的 MiniGUI都比它复杂许多。您也许会问,这样简单的GUI如何实现浏览器呢?原因很简单,浏览器有自己一套GUI。Android浏览器 (WebKit)的GUI和Android的GUI实用同一套GDI——Skia,但GUI层是完全不同的设计,分别自成体系。 Windown类,位于代码树frameworks\base\core\java\android\view\Windowjava.java文件。连同注释,这个文件总共.
阅读全文
Graphics--MaskFilter
摘要:使用MaskFilterMaskFilter类可以为Paint分配边缘效果。对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换。Android包含了下面几种MaskFilter:BlurMaskFilter指定了一个模糊的样式和半径来处理Paint的边缘。EmbossMaskFilter指定了光源的方向和环境光强度来添加浮雕效果。要应用一个MaskFilter,可以使用setMaskFilter方法,并传递给它一个MaskFilter对象。下面的例子是对一个已经存在的Paint应用一个EmbossMaskFilter:Java代码1.//设置光源的方向2.float[
阅读全文
android中画笔paint的方法汇总
摘要:/***Paint类介绍**Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色,*样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法,*大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。**1.图形绘制*setARGB(inta,intr,intg,intb);*设置绘制的颜色,a代表透明度,r,g,b代表颜色值。**setAlpha(inta);*设置绘制图形的透明度。**setColor(intcolor);*设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。**setAntiAlias(booleanaa);*设置是否使用抗锯齿
阅读全文
mysql binlog
摘要:1.binlog,是二进制日志,比如mysql的日志一般是用binlog,利用binlog可以恢复数据,可以实现数据主从同步2.php实现一套基于用户的binlog,以每次登录为时间节点3.把用户当前登录的所有sql操作都记录成一个sql文件4.百度增量备份。
阅读全文