知识点总结(不定期更新)

1.总结一下接口回调

//接口回调
interface CallBack{
    public void solve(String ques);
}

Class A implement CallBack{
    private B b;

    public A (B b){
        this.b = b;
    }
    public void askQues(String ques){
        new Thread(new Runnable(){
            b.execute(A.this,ques);


        }).start;
    }

    //解决了问题参数肯定是anser啊!!!!!!!!!!!!!!!

    @override
    public void solve (String ques){
        SYSO("解决了问题");

    }

}

Class B{
    public void execute(CallBack callback ,String ques){
        SYSO("anser");

        //告诉A啊
        callback.solve(anser);
    }


}

Class Test{
    A a = new A(b);

    B b = new B();

    a.askQues(wenti);
}

2.//设置底部横线的宽度
int lineWidth = tabColorizer.getUnderlineWidth(mSelectedPosition);
if (lineWidth > 0) {
int linePadding = (right - left - lineWidth) / 2;
if (linePadding > 0) {
left += linePadding;
right -= linePadding;
}
}

android:hardwareAccelerated=”false”

解决webview显示速度慢的方法
http://www.cnblogs.com/xinye/p/3144139.html

3.代码优化部分
1).减少代码的重复计算

//代码重复计算
  for (int i = 0;i <list.size(); i++){

        }
 //优化之后的代码
  int length = list.size();
        for (int i = 0 ; i < length;i++){

        }

4.Log的使用,关于真机和模拟器log会出现很大差别…具体解决方式百度

5.今天要说一个非常重要的知识点 关于Fragment的创建显示一点点解析
关于setUserVisibleHint 和 onHiddenChanged 的区别
1).setUserVisibleHint 结合ViewPager使用 onHiddenChanged 结合Fragment 的hide 和 add show 使用
不在ViewPager中使用setUserVisible是不会走的
2)关于构造参数,boolean isVisibleToUser 与boolean hidden 的用法是一样的
3)关于预加载
通过 FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
来创建Fragment 是不会有预加载的问题

ViewPager的预加载问题是一定会出现的
http://blog.csdn.net/qq_21898059/article/details/51453938
采用了 重写低版本ViewPager里面的方法,但是我没有使用过.
我个人倒是觉得通过
void setUserVisibleHint(boolean isVisibleToUser)、boolean getUserVisibleHint()解决预加载是一个不错的方式
而且将这个方法使用在BaseFragment里面效果更佳 当然 如果页面中含有很多不同的Fragment,我们可以新创建一个Fragment来继承之前的BaseFragment

public abstract class BaseViewPagaerFragment extends BaseFragment {

    public View view;
    private View recy;
    public boolean isVisible;

    @Override
    public View setContentView() {
        view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_base_list, null);
        LogUtils.d("TAG",System.currentTimeMillis() + "-------setContentView");
        return view;
    }

    @Override
    public void initView() {
        recy = view.findViewById(R.id.base_recy);
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (getUserVisibleHint()) {
            isVisible = true;
            onVisible();
        } else {
            isVisible = false;
            onInVisible();
        }
    }

    /**
     * fragment不可见
     */
    private void onInVisible() {


    }

    /**
     * fragment可见
     */
    private void onVisible() {
        LogUtils.d("TAG",System.currentTimeMillis() + "-----onVisible");
        onLoadData();
    }

    /**
     * 加载网络数据  初始化数据的使用
     */
    protected abstract void onLoadData();
}

让子类去重写onLoadData()方法,进行网络数据的请求.

6.关于H5页面的加载优化
最近项目用到了很多的H5页面,我一般都是用WebView控件进行加载,但是也会有一些动画效果需要展示 所以想要优化一下动画效果 以及 关于webview的内存泄漏问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值