之前在Stuq的Android课程中有幸分享了一些关于优化的问题,后期又处理了一些来自网友的问题,这里简单以文字形式做个整理.
简单示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void testDoNetworkRequest() { int corePoolSize = 5; int maxPoolSize = 10; //线程数量超过核心线程数之后的超时时间,即超过这个时间还没有新的task,多余的线程则销毁掉。 long keepAliveTime = 10; ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>()); executor.execute(new Runnable() { @Override public void run() { //Do network IO here } }); } |
---|
关于线程的文章,请参考
1 2 3 4 5 6 7 | public void implicitUseStringBuilder(String[] values) { String result = ""; for (int i = 0 ; i < values.length; i ++) { result += values[i];//create new StringBuilder object every time } System.out.println(result); } |
---|
1 2 3 4 5 6 | public void explicitUseStringBuider(String[] values) { StringBuilder result = new StringBuilder(); for (int i = 0; i < values.length; i ++) { result.append(values[i]); } } |
---|
关于拼接字符串的文章
1 | ArrayList list = new ArrayList(); |
---|
1 2 3 | ArrayList list = new ArrayList(); WeakReference<ArrayList> listWeakRef = new WeakReference<ArrayList>(list); ArrayList myList = listWeakRef.get(); |
---|
1 2 3 4 5 6 | private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; |
---|
handler.removeCallbacksAndMessages(null);
相关文章
STATIC_OBJECT
只在第一次调用时初始化,后续调用则不会再执行初始化1 2 3 | public class Example { public static Object STATIC_OBJECT = new Object(); } |
---|
1 2 3 4 5 6 7 8 9 10 11 12 | public class SingleInstance { private SingleInstance() { } public static SingleInstance getInstance() { return SingleInstanceHolder.sInstance; } private static class SingleInstanceHolder { private static SingleInstance sInstance = new SingleInstance(); } } |
---|
关于单例的文章
关于Android中内存泄漏的文章
options.inJustDecodeBounds = true;
可以获取width,height和mimetype等信息,但不会申请内存占用关于Bitmap的文章
关于混淆,请参考文章读懂 Android 中的代码混淆