项目中的坑 总结

1.微信登录与微信支付同时在一个项目里面进行开发的时候,应该注意一下,需要用同一个appid也就是在同一个的开放平台上进行申请。(每次微信的登录与微信的支付都会将APP register到微信的后台中,两个账号起冲突。)

2.地图开发方面:

百度地图在搜索方面支持(附近搜索,城市内搜索,范围搜索但是对于全国的搜索没有什么支持)

高德地图对于全国搜索的支持比百度的要好些,推荐使用高德地图作为附近推荐与搜索的三方。

3.as开发环境中,使用git作为版本控制软件的时候,提交代码冲突时候,如果将org文件也提交到服务器的话,那么用脚本打包的话,会发生把org文件打包到其中的情况,那么会导致很多切环境的问题。

4.listview中的点击事件问题:
问题就是ListView中的Item中如果有Button,CheckBox等这样的组件的话,ListView中的setOnItemClick方法就是失效了,原因是Item没有获取焦点,焦点被Button等控件默认获取到了,这里有两种解决方法:
第一种就是让Button控件失去焦点,可以在布局文件中设置代码:android:focusable="false"即可
第二种就是把setOnItemClick方法中的逻辑代码方法getView中的contentView的onClick方法中

5. 当activity被finish的时候,延迟发送的消息仍然会存活在UI线程的消息队列中,直到10分钟后它被处理掉。这个消息持有activity的Handler的引用,Handler又隐式的持有它的外部类(这里就是SampleActivity)的引用。这个引用会一直存在直到这个消息被处理,所以垃圾回收机制就没法回收这个activity,内存泄露就发生了。
在新的类文件中实现Handler的子类或者使用static修饰内部类。静态的内部类不会持有外部类的引用,所以activity不会被泄露。如果你要在Handler内调用外部activity类的方法的话,可以让Handler持有外部activity类的弱引用,这样也不会有泄露activity的风险。关于匿名类造成的泄露问题,我们可以用static修饰这个匿名类对象解决这个问题,因为静态的匿名类也不会持有它外部类的引用。
private static class MyHandler extends Handler {
private final WeakReference mActivity;
public MyHandler(SampleActivity activity) {
mActivity = new WeakReference(activity);
}
@Override
public void handleMessage(Message msg) {
SampleActivity activity = mActivity.get();
if (activity != null) {
// ...
}
}
}

6.在进行输入框的开发的时候应该就行edittext的ime设置,这样可以将软键盘的右下角按钮变为自己想要的东西imetype=action_down。右下角就变成了完成。action-search就变成搜索的样子。

7.屏幕分享软件vysor插件

8.tool相关的使用,控制的是预览的时候进行的一些操作,而不会影响到正事的代码

9.viewstub使用,用来替换visible与invisible的操作,可以在invisible的时候不占用内存,类似于占位符的作用。

10. https://github.com/googlesamples/android-architecture


11./*
    edittext在listview item上的时候只需要这么做:
    1、android:windowSoftInputMode="adjustPan"
    2、去掉内存复用
    3、监听edittext输入,用一个map来保存数据
 */

12.base的类中如果有绑定监听的(类似与要监听蓝牙与扫描枪之内的监听)应该有解除绑定的地方。最好是使用eventbus,谁用谁来接收就行。


你可能感兴趣的:(android开发)