Activity的四种加载模式
摘要:Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一种别有洞天的感觉。灵活的使用合适的加载模式,可以避免产生大量的重复的Activity,从而优化性能,减少系统资源消耗。 四种加载模式具体为:standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。singleTop: 检查是否已经存在了一个实例位于Activity Stack的顶部,如果存在就不产生新的实例,反之则调用Activity的newInstance..
阅读全文
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 *
阅读全文
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);*设置是否使用抗锯齿
阅读全文
修改launcher 快捷方式的列数
摘要:只要大家看到这句代码就会自然明白。 cellCountX = a.getInt(R.styleable.Workspace_cellCountX, 10); cellCountY = a.getInt(R.styleable.Workspace_cellCountY, 4);明白了否?不明白打开代码看下这句代码就明白了!http://weibo.com/wenfordli
阅读全文
android luancher - 桌面的显示分析
摘要:1.桌面的显示会调用:showWorkspace(true) void showWorkspace(boolean animated) { Resources res = getResources(); int stagger = res.getInteger(R.integer.config_appsCustomizeWorkspaceAnimationStagger); mWorkspace.changeState(Workspace.State.NORMAL, animated, stagger); if (mState == St...
阅读全文
android luancher - 应用信息的传递
摘要:1.简要说明,其他部分列掉:2.进入AllAppsList,属性data是所有应用的一个数组集合。3.进入LauncherModel,进入onlyBindAllApps方法查看到: final Callbacks oldCallbacks = mCallbacks.get(); if (oldCallbacks == null) { // This launcher has exited and nobody bothered to tell us. Just bail. Log.w(TAG, "Loader...
阅读全文
android 处理图片工具
摘要:import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.ColorMatrix;import andr
阅读全文
vlc 的代码里面只有解析 标准 m3u 文件的代码
摘要://Open and parse a M3U file:int M3U_open(char *fileName){ FILE *f; char lineText[512]; char chrLength[20]; char title[264]; struct M3U_songEntry *singleEntry; int playListCount = lPlayList.songCount; f = fopen(fileName, "rt"); if (f == NULL){ //Error opening file: ...
阅读全文