美文网首页
谈论项目

谈论项目

作者: SmNiuhe | 来源:发表于2016-08-16 22:42 被阅读0次

网络层####

  • 创建子线程的三种方式
    //在ui线程(主线程)进行操作
    runOnUiThread(new Runnable() {//封装了handler

                      @Override
                      public void run() {
                          tv_antivirus_text.setText("正在扫描:"+name);
                          
                          //6.展示扫描软件的名称信息
                          TextView textView = new TextView(getApplicationContext());
                          textView.setTextColor(Color.BLACK);
                          textView.setText(name);
                          //textview添加到线性布局中
                          //ll_antivirus_safeapks.addView(textView);
                          ll_antivirus_safeapks.addView(textView, 0);//index:将textview添加到线性布局的哪个位置
    
  • 详解Android中AsyncTask的使用

  • HttpUtils使用方法(接口回调)
    HttpUtils http = new HttpUtils();
    http.send(HttpRequest.HttpMethod.GET, "http://www.lidroid.com",
    new RequestCallBack<String>(){ @Override public void onLoading(long total, long current, boolean isUploading) { testTextView.setText(current + "/" + total); }
    @Override public void onSuccess(ResponseInfo<String> responseInfo) {
    textView.setText(responseInfo.result);
    }
    @Override public void onStart() { }
    @Override public void onFailure(HttpException error, String msg) { }
    }
    );

  1. 项目怎么说
    先大致介绍, 再分层次去说
    1.1. 网络层
    1.1.1. 普通网络请求, 线程+Handler/AsyncTask/线程池, xUtils2.x(接口回调), JSON - JavaBean, Gson
    1.1.2. 普通数据缓存, 读本地, 先显示本地数据, 拿时间戳访问服务器,
    如果有更新, 返回新数据+时间戳, 缓存到本地(应用私有目录/SD卡/数据库), 重新显示.
    1.1.3. 图片请求, 图片缓存
    1.1.4. 断点下载/上传, range, DownloadTask, 存数据库, Handler, DownloadListener, ViewHolder
    比较有含金量
    1.2. 业务逻辑层
    1.2.1. JavaBean, 页面显示, 下拉刷新, 加载更多, 收藏, 登录, 分享, 商城(购物车, 支付), 百度地图
    1.2.2. 数据存储
    1.2.3. Service(起线程, 保持连接, 推送), BroadcastReceiver(起服务, 组件间通信工具)
    1.3. 页面层
    1.3.1. Activity, 抽取BaseActivity, onCreate, initView, initDate, 访问网络/回调,
    用集合记录打开/关闭的Activity, 写一个方法退出应用, startAnActivity
    1.3.2. Fragment, show/hide, replace
    1.3.3. 常用控件, ListView, ViewPager(JazzyViewPager), LinearLayout, RelativeLayout, FrameLayout
    1.3.4. 自定义控件, 举例: 可拖动的GridView
    1.3.5. 屏幕适配, 除了新闻客户端讲的那几种, 再加上 PercentRelativeLayout、PercentFrameLayout
    http://blog.csdn.net/zhaokaiqiang1992/article/details/45419023
    http://developer.android.com/guide/practices/screens_support.html
    1.3.6. 动画
    1.4. 优化(掺杂在前三部分里)
    1.4.1. 布局优化, include, merge, ViewStub, addView/removeView
    1.4.2. 代码优化, 注解框架, ButterKnife, Dagger2, xUtils3, lint
    1.4.3. 内存/性能优化, OOM, 内存泄露, MAT
    1.4.4. 电量优化
    http://www.csdn.net/article/2015-01-20/2823621-android-performance-patterns/1
    1.5. WebView, HTML5, 5.0新特性, ...
  2. 自定义控件
    2.1. 怎么创建一个自定控件, 继承View/ViewGroup/已有控件, 构造方法串起来, 第三个参数
    2.2. onMeasure(测量, 两个参数), RatioFrameLayout, onLayout(布局, ViewGroup), 流式布局 FlowLayout
    onDraw(绘制, canvas, paint, 不要在onDraw里new对象, Path), 快速索引
    2.3. onTouchEvent(返回值), invalidate, dispatchTouchEvent, onInterceptTouchEvent(ViewGroup)
    requestDisallowInterceptTouchEvent
    2.4. 回调, 定义状态, 定义回调接口, 回调方法(参数), 成员变量(set), 在适当位置调用回调方法, 外部使用
    2.5. 动画(帧动画, View/补间动画, 属性动画, 区别), 插补器, 估值器(TypeEvaluator) ValueAnimator
    2.6. ViewDragHelper, nineoldandroid.jar(没有真正改变view的属性)
  3. 图片缓存
    http://hukai.me/android-training-course-in-chinese/graphics/displaying-bitmaps/index.html
    DisplayingBitmaps
    3.1. 不能崩(OOM), 压缩处理,
    xUtils2.x com.lidroid.xutils.bitmap.BitmapDisplayConfig, optimizeMaxSizeByView
    3.2. 不能卡, 异步, Thread, AsyncTask
    3.3. 不能错位, ListView/GridView, setTag, AsyncDrawable
    3.4. 快, 缓存, 内存缓存(LruCache), 硬盘缓存
    final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
    // Use 1/8th of the available memory for this memory cache.
    final int cacheSize = maxMemory / 8;
    mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
    @Override
    protected int sizeOf(String key, Bitmap bitmap) {
    // The cache size will be measured in kilobytes rather than
    // number of items.
    return bitmap.getByteCount() / 1024;
    }
    };
  4. Handler
    4.1. 为什么要有Handler
    4.1.1. 主线程不能做耗时操作, 要放在子线程
    4.1.2. 子线程不能修改主线程的UI, 就需要Handler
    4.2. new Handler(), 重写handleMessage, sendMessage, post, Message,
    4.3. 消息队列 MessageQueue, Looper.prepare, Looper.loop
    4.4. 所有的界面操作, 都依赖于Handler机制
    4.5. 子线程只要调用了 Looper.prepare, Looper.loop, 就可以在这两行代码之间使用WindowManager修改UI,
    主线程也不能修改子线程创建的UI
    4.6. Handler是线程间通信的工具

相关文章

  • 谈论项目

    网络层#### 创建子线程的三种方式//在ui线程(主线程)进行操作runOnUiThread(new Runna...

  • 项目管理 |为何WBS分解如此重要,但往往不容易做好

    一般而言,我们常谈论的是项目目标,项目需求,这些都是宏观的,对项目的整体要求。或者,谈论具体的项目活动。如何将两者...

  • 在大学,和优秀的人在一起真的很重要!

    1 普通人的圈子,谈论的是闲事 生意人的圈子,谈论的是项目 事业人的圈子,谈论的是财富 智慧人的圈子,谈论的是舍得...

  • 安装包瘦身

    mark:iOS APP安装包瘦身实践 清理项目中不再使用的图片资源 当我们谈论iOS瘦身的时候,我们到底在谈论些...

  • 谈谈区块链里的共识机制:POW,POS,DPOS。

    在区块链领域我们经常听到有人谈论共识机制,谈论某个项目采用的是pow还是pos亦或dpos之类的话题,那么共识机制...

  • 你的微服务敢独立交付么?

    最近经常在项目或是社区里听到大家谈论微服务架构,但谈论的焦点更多集中在微服务拆分,分布式架构,微服务门槛,Devo...

  • 解密互联网上沸沸扬扬的灰色项目

    最近听到很多人都在谈论灰色项目,有些做正规项目的人也想做灰色了,灰色项目:暴利,变现快。但是我却并不建议大家去做,...

  • 圈子

    1.普通人的圈子,谈论八卦赚工资想明天; 2.生意人的圈子,谈论项目赚利润想明年。 3.事业人的圈...

  • 圈子选对了,事就成了!

    圈子决定未来 打工的圈子,谈论的是闲事,赚的是工资,想的是明天; 生意人的圈子,谈论的是项目,赚的是利润,想的是下...

  • 圈子改变未来

    学会优化自己的圈子,因为圏子决定未来!普通人的圈子,谈论的是闲事赚的是工资,想的是明天。生意人的圈子,谈论的是项目...

网友评论

      本文标题:谈论项目

      本文链接:https://www.haomeiwen.com/subject/dalpsttx.html