Android开发中的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/androidzf/article/details/86611414

1、AndroidStudio运行项目提示:解析软件包错误

把图片中箭头所指的地方不勾选

image

2、使用ARouter报错:there’s no route matched the path

一般是不同的module使用了相同的一级路径。

ARouter要求path必须有两级路径/app/xxx,第一级路径是Group的名称,在Arouter第一次寻找到route的时候便删除了这个一级路径的group,因为一级路径的重复,再调用另一个module的一级路径是”app”的路由时,由于之前Warehouse.groupsIndex已经删除,便导致了there’s no route matched的错误。

3、Dialog在使用ContentProvider的时候不显示

Dialog在使用ContentResiver导入通讯录的时候不显示
解决办法:开启子线程,把导入过程放入子线程中操作
原因:暂且不知

4、调整AndroidStudio内存

在AndroidStudio安装目录下的bin文件夹里找到studio64.exe.vmoptions文件:

-Xms512m
-Xmx3072m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djna.nosys=true
-Djna.boot.library.path=

-da

修改其中的Xms、Xmx、XX:MaxPermSize。

其中-Xms 是JVM启动的起始堆内存,堆内存是分配给对象的内存。一般默认设置是128m,建议改成512m
其中-Xmx 是 Java 虚拟机启动时的参数,用于限制最大堆内存。所以这里也需要更改。这里的更改根据电脑的实际情况进行分配。笔者这里设置了3072m。
其中-XX:MaxPermSize 是指定最大的Permanent generation大小。Permanent generation space,实际上就是方法区,存储了Class的信息以及一些其他信息。有时开发时出现的错误如Permgen Space方面的,就是指这个内存溢出了。所以一般这个可以不改,也可以加大一点。

5、ViewPager+Fragment,Fragment销毁后重新加载页面空白

两种情况:
1、重写FragmentPagerAdapter的destroyItem()方法:

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    }

跳转到ViewPager页面时直接定位到第三个页面(或后面几个页面)时,切换到第一个页面,第一个页面空白。

2、不重写FragmentPagerAdapter的destroyItem()方法,当ViewPager页面显示过后被销毁然后再次显示时页面空白。

原因:
Fragment是绑定在Activity中的,Viewpager切换销毁Fragment时并没有走onDestroy()方法。Fragment中的全局变量也同样没有被释放回收。但是View已经被重新替换了:

    if (mAdapter == null) {
        mAdapter = new XiaoTookenAdapter(totals);
        mAdapter.setOnItemClickListener(XiaoTookenFragment.this);
        mAdapter.setLoadMoreView(new XiaoMeiLoadMoreView());
        mAdapter.bindToRecyclerView(mRecyclerView);
        mAdapter.setOnLoadMoreListener(XiaoTookenFragment.this, mRecyclerView);
    } else {
        mAdapter.notifyDataSetChanged();
    }

mAdapter不为空走else,但是mRecyclerView已经重新findViewById了。

解决:
在onDestroyView()方法中释放资源,清空数据。或者在onCreateView()初始化数据。或者将contentView也保存下来,不要每次都重新inflate一个View。

6、DataBinding 使用泛型报错

与元素类型 "variable" 相关联的 "type" 属性值不能包含 '<' 字符。

要使用 ‘<’ 的转义字符:<

7、DataBinding 使用ObservableMap进行数据绑定报错

Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'android:text' with parameter type V on android.widget.TextView.
file:E:\demo\DataBindingDome\app\src\main\res\layout\activity_main.xml
loc:46:28 - 46:41
****\ data binding error ****

layout 布局中声明ObservableMap需要添加泛型。否则使用的时候报错。

未完待续…

猜你喜欢

转载自blog.csdn.net/androidzf/article/details/86611414