Articles of 优化

为什么proguard处理AndroidManifest.xml

我看到一些不明原因的Proguard行为。 AFAIK proguard不注意android清单。 此外,在我的proguard.cfg我没有提及BroadcastReceiver相关的类。 所以我认为这些应该被剥离。 但是我在bin / proguard.txt中看到一些奇怪的东西: # view AndroidManifest.xml #generated:784 -keep class com.fiksu.asotracking.InstallTracking { <init>(…); } 而那个类(BroadcastReceiver的下属)并没有被剥离。 理性对我没有任何意义: [proguard] com.fiksu.asotracking.InstallTracking [proguard] is kept by a directive in the configuration. 如果class级没有在清单中提到,就会被剥离。 很高兴知道为什么。

Android上的OpenGL ES 2.0中的快速dynamic顶点

我想在Android上使用OpenGL ES 2.0批量绘制一堆线,我需要知道最好的方法来做到这一点。 现在我创build了一个名为LineEngine的类,它build立了一个FloatBuffer来绘制所有的顶点,然后一次绘制所有的线。 问题是,显然FloatBuffer.put()是非常慢,吞噬CPU时间像疯了似的。 这是我的class public class LineEngine { private static final float[] IDENTIY = new float[16]; private FloatBuffer mLinePoints; private FloatBuffer mLineColors; private int mCount; public LineEngine(int maxLines) { Matrix.setIdentityM(IDENTIY, 0); ByteBuffer byteBuf = ByteBuffer.allocateDirect(maxLines * 2 * 4 * 4); byteBuf.order(ByteOrder.nativeOrder()); mLinePoints = byteBuf.asFloatBuffer(); byteBuf = ByteBuffer.allocateDirect(maxLines * 2 * 4 * […]

这个方法会被调用吗? (仍然需要一个被接受的答案…详见答案)

TL; DR: 打电话时, onPause方法是否被调用? 我有权限READ_PHONE_STATE,我不想要。 那么,onPause方法是否会在通话中被调用,以便我可以在那里将应用程序静音? private PhoneStateListener phoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { if (doesUserHavePermission()) { if (state == TelephonyManager.CALL_STATE_RINGING) { onPhoneCallInterrupt(); //Method I made that mutes audio for phone call } else if (state == TelephonyManager.CALL_STATE_IDLE) { } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) { onPhoneCallInterrupt(); //Method […]

为什么Android API要求结果参数而不是返回方法?

我的问题是在整个Android API中,很多库调用都要求将results[]parameter passing给方法,例如: public boolean isInProximity(double startLat, double startLongitude, float meters) { float[] results = new float[3]; Location.distanceBetween(startLat, startLongitude, endLatitude, endLongitude, results); return results[0] <= meters; } 对android的调用是Location.distanceBetween() ,它需要results[]为什么他们不包括一个返回签名的方法? 我假设它是某种内存或速度优化。 我不确定背后的确切原因。

Android和iOS上的OpenGL:优化以及它们的不同之处

我正在为Android和iPhone编写一个OpenGL ES 1.1应用程序。 OpenGL ES引擎位于共享库中,可通过Android上的NDK访问。 我正在寻找优化我的OpenGL性能。 有很多video和资源,例如: ngmoco’s Tim Omernick on Optimizing OpenGL for iPhone http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Performance/Performance.html#//apple_ref/doc/uid/TP40008793-CH105 http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html OpenGL ES 2.0:寻求许多移动顶点的VBO性能/优化技巧 什么时候VBO比“简单”的OpenGL原语(glBegin())更快? https://gamedev.stackexchange.com/questions/1068/opengl-optimization-tips 但通常有一些普遍适用的众所周知的技术,例如: 使用顶点缓冲对象(VBOs) 最小化OpenGL状态更改 在可能的地方使用纹理atlassing,以避免select许多不同的纹理 有些技术可能会或者可能会对它们的细节更加敏感,Android和iPhone可能会有所不同,这就是我所感兴趣的。例如: 交错你的顶点数据在每个顶点:例如顶点坐标; 纹理坐标; 正常。 在交错中是否有优先顺序的项目? 将每个顶点填充到若干字节的下一个倍数。 我看到32号队伍,但也有一些地方看到4或8。 考虑对每个顶点的坐标使用一个短的或类似的,而不是一个浮点数 所以我的问题是:有什么更详细的魔术优化,如上面的最后一个列表Android和iPhone不同? 他们在哪里不一样,最好的策略是什么? 只要用一个适合两个世界的价值? (根据平台在运行时间微调这些细节可能有点超过顶部?)

通过Java List进行高效循环

下面的列表来自于2008年的谷歌I / O谈话中称为“Dalvik虚拟机内部”的一系列方法,从一系列对象循环到最低效率: (1) for (int i = initializer; i >=0; i–) //hard to loop backwards (2) int limit = calculate_limit(); for (int i= 0; i< limit; i++) (3) Type[] array = get_array(); for (Type obj : array) (4) for (int i =0; i< array.length; i++) //gets array.length everytime (5) for (int i=0; i < […]

为什么有时候这不起作用?

TL; DR我有很多button,我正在交换他们的图像。 出于某种原因,我的代码只适用于某些手机,而不适用于其他手机。 我的应用程序使用以下代码比较imagebuttons上的图像: onCreate : redsquare = getResources().getDrawable(R.drawable.redsquare); bitred = ((BitmapDrawable) redsquare).getBitmap(); onClick ( v是点击的button) ClickGround = v.getBackground(); //Get the background of button clicked //the bitmap background of the button clicked BitClick = ((BitmapDrawable) ClickGround).getBitmap(); 然后,在onClick后面,我检查用户是否点击了redSquare: if (BitClick == bitred) { //Make sure it is the red square that user clicked } 我已经在我的模拟器和华为手机上进行了testing,效果很好。 当我在另一部手机(LG […]

如何优化android webview中的渲染速度

有没有可能在webview中提高渲染速度? 使用简单的innerHTML,尽pipejs渲染需要几ms,但需要接近1秒来显示内容。 使用IOS,即使使用较less的高性能硬件,完全相同的代码也可以快速而完美地运行。 testingAndroid:2.3,3.2,4.0(Desire HD,Galaxy Nexus,Galaxy Tab)IOS:4,5(iPhone 3gs,4) 感谢任何有用的回应!

我如何正确地触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图?

正如文件中所述: “持有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用程序可以触发系统对话框,让用户直接将应用程序添加到白名单,而无需进行设置。应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图触发对话。 有人可以告诉我正确的方法来解决这个问题吗?

JPG真的只能用于Android?

Android支持以下三种图像格式: PNG(首选),JPG(可接受)和GIF(不鼓励)。 资料来源: http : //developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap 为什么JPG只能被列为可接受的? 对于没有透明度的图像来说,JPG不是一种更好的格式,因为它们比PNG更less占用空间:s? 或者PNG在运行时performance得如此之好,即使他们倾向于使APK变得更大,值得存储全屏幕背景图像等等作为PNG:s。 我对许多包含大量graphics的应用程序并不满意,这些应用程序占用了内部存储空间,因此它一直处于满载状态。 我的猜测是,他们在使用PNG的时候使用的是PNG,因为开发者指南说PNG是首选而没有解释为什么。 任何人都可以告诉我是否正确说JPG应该用于非透明图像?