摘要:问题描述: 在A Activity启动B Activity,并结束A 页面,B页面在启动时进行大量的动画场景,源源不断的向主线程消息队列发送消息。A Activity的onPause正常执行,但是onStop与onDestory都延迟了10s才执行。为什么会出现这样的情况? Activity 的 o
阅读全文
摘要:Fragment 本身并没有 replace 和 add 方法,这里的理解应该为使用 FragmentManager 的 replace 和 add 两种方法切换 Fragment 时有什么不同。我们经常使用的一个架构就是通过 RadioGroup 切换 Fragment,每个 Fragment 就
阅读全文
摘要:Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。通过 Intent 可以
阅读全文
摘要:1.在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。2.Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。3.Parcelable 不能使用在要将数据存储在磁盘上的情况。尽管 Serializa
阅读全文
摘要:1.NDK 是一系列工具的集合 NDK 提供了一系列的工具,帮助开发者快速开发 C(或 C++)的动态库,并能自动将 so 和 java 应用一起打包成 apk。NDK 集成了交叉编译器,并提供了相应的 mk 文件隔离 CPU、平台、ABI 等差异,开发人员只需要简单修改 mk 文件(指出“哪些文件
阅读全文
摘要:当我们的 Java 需要调用 C 语言的时候可以通过 JNI 的方式,Java Native Interface。Android 提供了对 JNI 的支持, 因此我们在 Android 中可以使用 JNI 调用 C 语言。 在 Android 开发目录的 libs 目录下添加 xxx.so 文件,
阅读全文
摘要:1、手动设置 ListView 高度经过测试发现,在 xml 中直接指定 ListView 的高度,是可以解决这个问题的,但是 ListView中的数据是可变的,实际高度还需要实际测量。于是手动代码设置 ListView 高度的方法就诞生了。 /*** 动态设置 ListView 的高度
阅读全文
摘要:图片错位问题的本质源于我们的 listview 使用了缓存 convertView,假设一种场景,一个 listview 一屏显示九个item,那么在拉出第十个 item 的时候,事实上该 item 是重复使用了第一个 item,也就是说在第一个 item 从网络中下载图片并最终要显示的时候,其实该
阅读全文
摘要:图片的优化策略比较多。1、处理图片的方式:如果 ListView 中自定义的 Item 中有涉及到大量图片的,一定要对图片进行细心的处理,因为图片占的内存是ListView 项中最头疼的,处理图片的方法大致有以下几种:①、不要直接拿路径就去循环 BitmapFactory.decodeFile;使用
阅读全文
摘要:① 复用 ConvertView② 自定义静态类 ViewHolder③ 使用分页加载 ④ 使用 WeakRefrence 引用 ImageView 对象 ViewHolder 为什么要声明为静态类? 非静态内部类拥有外部类对象的强引用,因此为了避免对外部类(外部类很可能是 Activity)对象的
阅读全文
摘要:第一个是让该布局在其父控件中的布局方式,第二个是该布局布置其字对象的布局方式
阅读全文
摘要:可以在水平方向的 LinearLayout 中设置 weightSum 为 3,然后让其子控件的 weight 为 1,那么该子控件就是父控件的 1/3。
阅读全文
摘要:1、尽可能减少布局的嵌套层级可以使用 sdk 提供的 hierarchyviewer 工具分析视图树,帮助我们发现没有用到的布局。2、不用设置不必要的背景,避免过度绘制比如父控件设置了背景色,子控件完全将父控件给覆盖的情况下,那么父控件就没有必要设置背景。3、使用<include>标签复用相同的布局
阅读全文
摘要:android:padding 和 android:layout_margin 的区别,其实概念很简单,padding 是站在父 view 的角度描述问题,它规定它里面的内容必须与这个父 view 边界的距离。margin 则是站在自己的角度描述问题,规定自己和其他(上 下左右)的 view 之间的
阅读全文
摘要:a. 广播接收者的生命周期非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销毁;b. 广播接收者中不要做一些耗时的工作,否则会弹出 Application No Response 错误对话框;c. 最好也不要在广播接收者中创建子线程做耗时的工作,因为广播接收者被销毁后进程就成为
阅读全文
摘要:1、自己的应用(假设名称为应用 A)在发送广播的时候给自己发送的广播添加自定义权限,假设权限名为:com.itheima.android.permission,然后需要在应用 A 的 AndroidManifest.xml 中声明如下权限: 2、其他应用(假设名称应用 B)如果想接收该广播,那么就必
阅读全文
摘要:在清单文件中注册广播接收者称为静态注册,在代码中注册称为动态注册。静态注册的广播接收者只要 app 在系统中运行则一直可以接收到广播消息,动态注册的广播接收者当注册的 Activity 或者 Service 销毁了那么就接收不到广播了。静态注册:在清单文件中进行如下配置 动态注册:在代码中进行如下注
阅读全文
摘要:BroadCastReceiver 是 Android 四大组件之一,主要用于接收系统或者 app 发送的广播事件。 广播分两种:有序广播和无序广播。 内部通信实现机制:通过 Android 系统的 Binder 机制实现通信。 无序广播:完全异步,逻辑上可以被任何广播接收者接收到。 优点是效率较高
阅读全文
摘要:他们都是 Android 开发中使用频率最高的类。其中 Activity 和 Service 都是 Android 四大组件之一。他俩都是Context 类的子类 ContextWrapper 的子类,因此他俩可以算是兄弟关系吧。不过兄弟俩各有各自的本领,Activity负责用户界面的显示和交互,S
阅读全文