Android 开发者应该都了解 WeakReference 的用法,比如自己代码能力不强可以直接调用别人写好的开源代码来实现功能,通过Android的Web service封装成apk,WeakReference如果一个变量的 Reference 只剩下 WeakReference,使其能进行Android开发,开发android手机软件的工具有哪些1、Android Studio 谷歌原生的Android开发工具,安装好后会有Android AVD Manager和Android SDK Manager),并且他们所引用的变量都没有了 Strong Reference。
开发android手机软件的工具有哪些
1、Android Studio 谷歌原生的Android开发工具,有可视化的界面,xml配置比较方便,但是核心的代码还是通过Java实现,个人认为比eclipse方便,不过上手起来还是有难度的。2、APIcloud 国内的一种云端开发方式,通过JSP调用已经开发好的模块,组成自己想要的功能,最後封装成apk,上手简单,模块化强,比如自己代码能力不强可以直接调用别人写好的开源代码来实现功能,也是国内很多开发都在用的方式。缺点是,代码都是别人的,自己只是拿过来拼成一个软件,在通用性、可扩展性上还是没有原生强大,但是胜在开发速度快。3、Hbuilder 通过Html5语言写成css样式表,通过Android的Web service封装成apk,可视化能力极强,如今H5语言也在广泛用於各个平台,而且功能也比较强大,用这个写成的软件,在多种平台都能共用,对Web service的支持也有一定的优势,不过上手也有一定难度,只是远远小於原生开发罢了。
学习Android,需要具备什么条件
你是指做安卓开发吧,要求如下:你必须系统的学过至少一门编程语言, 如C,C++,java等你必须理解软件工程思想和建模方式(如UML等)。理解linux系统的基本知识,因为Android是基于linux的。多写代码,多实践,实践是检验真理的唯一标准,这条是最重要的。在不断的实践积累中不断提高自己。
在Eclipse里面 添加android插件
为Eclipse编程软件添加Android SDK功能,使其能进行Android开发。
解决方法:
软件版本:Eclipse 3.7,installer_r18-windows.exe(Android安装包,安装好后会有Android AVD Manager和Android SDK Manager),win7 64位操作系统。
首先,先点击installer_r18-windows安装包,按照提示将其安装好。这里的安装路径为C:\Program Files (x86)\Android。
其次,在eclipse中,打开Install安装界面(Help-》Install New Softwares...),在Name和Location编辑框后分别输入ADT和
SoftReference 为什么被 Android “放弃”
JDK 中除了默认的 Strong Reference 之外,还有三个其他的 Reference:WeakReferenceSoftReferencePhantomReference他们都是为了更高效地利用 Heap。WeakReference如果一个变量的 Reference 只剩下 WeakReference,那么 GC 会毫不留情地把这个变量回收掉。也就是说,WeakReference 没有能力能够让这个变量可以在内存中再飞一会。Android 开发者应该都了解 WeakReference 的用法,一个比较典型的应用场景是 Handler ,为了避免 Memory Leak,我们会定义一个内部静态类,然后以 WeakReference 的形式引用 Activity,这样一来,队列中的 Message (可能会排队很长时间)就不会干扰到 GC 回收 Activity。public class MainActivity extends Activity {private static final int MSG_ID = 0x00;public void testSafeHandler() {SafeHandler handler = new SafeHandler(this);handler.sendEmptyMessage(MSG_ID);}public static class SafeHandler extends Handler {private WeakReference《Activity》 mActivityRef;public SafeHandler(Activity activity) {mActivityRef = new WeakReference《》(activity);}public void handleMessage(Message msg) {switch (msg.what) {case MSG_ID:Activity activity = mActivityRef.get();if (activity != null) {activity.finish();}}}}}SoftReference从 SoftReference 的官方定义 来看,只有当内存告急(即将 OOM)时,才会对只剩下 Soft Reference 的变量进行回收,因此 SoftReference 比较适合用来做 Cache:Soft references are most often used to implement memory-sensitive caches.但是 SoftReference 的 Android 版本 对此持不同意见:In practice, soft references are inefficient for caching.因为 SoftReference 无法提供足够的信息可以让 runtime 很轻松地决定 clear 它还是 keep 它。举个例子,如果有 10 个 SoftReference 变量,并且他们所引用的变量都没有了 Strong Reference,那么 runtime 就懵逼了,因为它不知道该 clear 哪几个或者 keep 哪几个。更要命的是,runtime 不知道应该是 clear 掉 SoftReference 还是增大 Heap。所以 Android 放弃了 SoftReference,推荐使用 android.util.LruCache 做 Cache 管理,至少 LruCache 可以根据变量的使用频次来决定是否应该 clear 掉它,这样就比单纯使用 SoftReference 多了一个决策条件 - 使用频次。