android开发心得 安卓开发心得 您所在的位置:网站首页 安卓项目开发心得体会和感悟怎么写 android开发心得 安卓开发心得

android开发心得 安卓开发心得

2024-07-15 20:33| 来源: 网络整理| 查看: 265

        最近一直忙于学习和技术,没有来的急写点东西,我是2010-09-01日刚步入android开发,当时根据公司的要求和安排,我被作为android开发的一员,总算几个人的努力,终于把一个小项目完成了,但是我认为还是有一些bug,后期还得改善一下。现在我就把历时将近1个半月的android开发心得简单总结一下,望对有部分即将或正在进行android开发的人员有一点点作用。

        从android开发最值得我有感慨的是:遇到任何技术上的问题,不要去放弃,只是一个时间和不断去摸索的过程,最终会有一个很好的解决方案!

       数据线程问题的处理:比如说,我做这个外汇小项目,当时采用socket技术从服务器接收数据都无法做到,不是技术方面的原因,而是一些细节问题没有处理好。服务器端是随便输入用户名和密码,就可以进入看到很多外汇数据的输出,但是刚开始怎么得不到,原来是要连续发两次请求,即用户名和密码,并且服务器有换行,要时刻等待接收服务器端发来的数据(最后采用计时器的方法来不断地保持连接服务器)等细节的处理。下面就是一些代码:

// ===============访问服务器,接收数据===================== public void accessServer() { String message = "request" + "/r/n"; try { socket = new Socket(SERVERIP, SERVERPORT); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())), true); out.println(message); out.println(message); br = new BufferedReader(new InputStreamReader( socket.getInputStream()), 1024 * 10); msg = br.readLine(); while ((msg = br.readLine()) != null) { Message mess = new Message(); mess.obj = msg; mess.what = 1; handler.sendMessage(mess); } } catch (Exception e) { Log.i("errors", e.toString()); } }

  为了得到服务器数据,都花费了4-5天的时间,这是我要负责的工作,当时我也是初次用socket的一些原理,根本都不懂,当然我也没有什么开发经验,遇到这个问题,只有自己去慢慢测试。我只要在android写一个客户端的接收数据的处理就行,上面就是,虽然上面的代码看起来很简单,是的,之前没有出来结果的那种感觉真的认为比较难,问题解决了就知道原来这么简单,我相信很多人都有这种开发的感受。

         当上面的问题解决了之后,也即得到数据之后,怎么让它在android视图上很好的显示出来,又是一个问题,因为外汇这种数据要保持实时数据更新,服务器来一条跟当前的数据作比对,是否有更新,有就更新掉,没有就不变,这种同步的实时更新,真的是让人头痛,通过网络的帮助和那些android开发技术的陌生人群去讨论,采用Handler线程处理,写自己的适配器。(有部分代码略)终于解决了这个问题.解决的代码如下:

// ==================================准备数据线程================================== // 通过设置Timer计时器连接服务器得到数据 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if (socket == null || !socket.isConnected() || !socket.isInputShutdown()) { accessServer(); } } }, 0, 10 * 1000); handler = new Handler() { public void handleMessage(Message mess) { switch (mess.what) { case 1: msg = (String) mess.obj; if (msg != null) s = msg.split(" "); int findex = 0; for (HashMap map : fillMaps) { if (map != null && map.get("forex") != null && map.get("forex").equals(s[0])) { if (!(map.get("bid").equals(s[1]))) { if (Double.parseDouble((String) map.get("bid")) < Double .parseDouble(s[1])) { isDownUp[findex] = true; } else { isDownUp[findex] = false; } map.put("bid", s[1]); map.put("ask", s[2]); } else if (!(map.get("ask").equals(s[2]))) { if (Double.parseDouble((String) map.get("ask")) < Double .parseDouble(s[2])) { isDownUp[findex] = true; } else { isDownUp[findex] = false; } map.put("ask", s[2]); } } fillMaps.set(findex, map); findex++; } showCurrencyPair(); break; default: break; } } }; }

通过这个问题的解决,我的心得是:遇到问题一定去寻求方法,比如:网络(百度,google,QQ等工具)真的是很不错!问题解决效率会很高。其次是多加人一些这方面的开发群,结实一些android开发技术人员,这个真的很重要,一可以锻炼你的沟通能力,二又可以多认识一些这方面的技术人员,这是一个远期和永久的资源,并且可能成为开发上的很好朋友。

         android布局:在项目开发中,为了实现自己的需求和布局,要好好考虑一下布局的设置,特别是视图的每一个属性的正确使用与否,都有可能让你的效果出不来,要不断地尝试,为什么效果出不来,可以多方面的尝试,比如多换换布局属性的设置。其次根节点的设置,很重要,这由可能直接导致你的布局出不来,所以你的子节点布局怎么设置,都没有效果,有的属性设置直接失效,这很有可能导致你的效果出不来的根本原因。当一些效果出不来的时候是否是布局用的不对,或者是否要嵌套一个布局,最常见有几种,在这里不列举了。最后,要考虑的是你的程序在各种手机上运行,视图是否可以自适应手机屏幕布局大小,这跟你的视图设置很有关系,特别是布局的内容或者控件很多的时候,你很有可能就设置高度和宽度,但是设置后,你的应用程序在手机小的屏幕上不一定能都显示出来,这要靠你自己去好好设置布局,最好的一般都是fill_parent和wrap_content,这样自适应大小,有的还要自己写视图来控制大小,当然网络上有很多不同的解决方案。最后,在视图方面,不管怎么样,一定要多尝试一下,测试不同的效果是怎么样。直到自己满意为止。

        资源的管理(res目录):把项目中能用资源来配置的,尽量用资源去配置,这样有什么问题,好调试和维护,也解决了代码臃肿或冗余的问题,这样大大解决了程序的代码长度,以后维护简便,当然自己还可以在其目录下增加辅助目录,便于区分功能管理。

        最后,不管怎么样,都不要放弃,要相信问题很快能解决的理念。当然,不要在一个方法上吊死了,这样很浪费时间和精力,多和技术人员交流探讨,最终采用什么样的技术点去解决问题,使其达到最优化效果,再次警告:不要在一个问题上去花费很多时间和精力,说不好明天一大早上班就解决了,呵呵~~。在这里,还有很多项目开发的细节我就不一一说了,相信大家都有自己的细节处理,还有很多android开发遇到的细节问题,网上很多,大家遇到的时候可以去搜索一下,多总结一下!以后就不会再犯这样的错误了。虽然有的时候很低级的错误避免不了,但是不要多次发生。还有最后一点是:不要认为这个问题很简单,就不敢问或者交流,但是自己首先必须尝试考虑和思考解决,确实解决不了了,再去问别人,这样你会发现效果就是不一样,受益匪浅。好了,我今天就写这么多了,有时间我会多写写这样的心得,不管有什么作用,对自己是会有好处的。我也希望大家不要一味的去开发,有的时候静下心来写点东西会有很好的感觉和心情!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有