首页 > 其他 > 详细

仿迅雷之Anroid版-工程结构

时间:2014-12-31 02:22:38      阅读:343      评论:0      收藏:0      [点我收藏+]
    一般开发的时候,我喜欢想好基本的功能模块,做Anroid一般就是想好有哪些功能,想好需要用到哪些开源的库,想好需要哪些最基本的功能类; 比如文件的操作,Bitmap的操作,Sqlite的操作,UI的自定义,屏幕的基本信息等。 所以一般我会分为下面几个部分(这也是做了几个小项目慢慢积累的一些东西):  同样: 高手可以指点指点,或者飘过~~~     等项目完成之后我们会项目发布到github上面,写的虽然很烂,但是对于我们这些初学者应该还是可以参考的。
    bubuko.com,布布扣
         顺便提下,消息推送用的是AndroidPN,参考http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html
                                                                    下载http://sourceforge.net/projects/androidpn/files/
         使用都比较简单,看看参考就行:关键是有源码可以修改,这里把点击消息的事件改了下,让点击消息的时候直接进行相应的处理;而不是跳转到一个详细页面,点击OK才触发操作;还有一个问题我将会做修改,就是主界面的应用中心的消息如何推送 -  我打算把服务端的消息推动增加一个功能,App:content的形式进行推送,对于前端收到类似这样的消息,不再进行消息通知,而是通知到启动了的程序,通知程序去更新应用中心消息,并且区分是链接,公告还是其它(这个虽然没开始,但是应该是可以实现的);
        说到这,我想起还需要验证一个关于AndroidPN性能的问题,我会做个测试:服务器支持多少客户端的推送 - 我大体会开n个线程做测试;
         com.errorvenus.fxunlei
            下面有主界面和开机画面,开机画面这里封装了下,主要是开机画面里面开了线程,主要是做一些初始化工作:比如创建文件夹,获取屏幕信息,sqlite.db的拷贝(从assert或者从服务器下载后拷贝到应用程序的data下面 - 这样可以实现用户数据同步),还有启动消息推送的等相关操作。
            这里的开机画面被封装成了一个抽象类,提供抽象方法(5s之后跳转):
             

点击(此处)折叠或打开

  1. public abstract class MDSplashActivity extends Activity
  2. {

  3.     @Override
  4.     protected void onCreate(Bundle savedInstanceState)
  5.     {
  6.         // TODO Auto-generated method stub
  7.         super.onCreate(savedInstanceState);
  8.         
  9.         ///< 开机动画
  10.         View view = LayoutInflater.from(this).inflate(setLayoutId(), null);
  11.         setContentView(view);
  12.         AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f,0.0f);
  13.         alphaAnimation.setDuration(5000);
  14.         view.startAnimation(alphaAnimation);
  15.         
  16.         ///< 异步初始化
  17.         new Thread(new Runnable()
  18.         {
  19.             @Override
  20.             public void run()
  21.             {
  22.                 handler();
  23.             }
  24.         }).start();
  25.     
  26.         new Handler().postDelayed(new Runnable()
  27.         {
  28.             public void run()
  29.             {
  30.                 Intent mainIntent = new Intent(MDSplashActivity.this, setToActivity());
  31.                 MDSplashActivity.this.startActivity(mainIntent);
  32.                 MDSplashActivity.this.finish();
  33.             }

  34.         }, 5000);
  35.     };
  36.     
  37.     /**
  38.      * 除显示和跳转外的额外处理
  39.      */
  40.     public abstract void handler();
  41.     
  42.     /**
  43.      * 提供一个要渐隐的view
  44.      * @return
  45.      */
  46.     public abstract int setLayoutId();
  47.         
  48.     /**
  49.      * 设置要跳转的Activity.class
  50.      * @return
  51.      */
  52.     public abstract Class<?> setToActivity();
    相信应该还是实用的。
    com.errorvenus.log
        自定义日志类,主要是方便自定义日志的输出,同时,增加崩溃捕获的一个功能,上传到后台服务器,方便查阅;我知道有人喜欢用System.out输出,但是日志多了之后,去挨个删除很费劲。 而且还会漏掉,所以如果自定义的话,就可以把自定义的接口注释掉,这样很容易找到哪些地方打了日志;  日志多了其实会影响性能的。   可能有些用会很好用的日志库,或者说使用像友盟这样的平台。 
        
    com.errovenus.listen
        虽然这个工程只有一个主界面,但是功能区还是有三四个,左边菜单功能区,自定义标题栏功能区,中间内容功能区,应用中心功能区,我们不可能把所有的监听事件都搞到一个类里面,这样代码太庞大,维护起来很费劲,所以需要单独把事件提出来,每个功能监听处理处理一个功能区。  当前像内容功能区是没有单独的监听处理的,而是放到了Adapter中处理:原因是左边菜单栏的监听处理后的结构是通过内容功能区去显示的,是通过适配器的方式进行的,所以内容的点击处理都是再适配器里面做的。

    com.errovenus.adapter
        这里面就主要是为菜单栏功能实现做的。主要是正在下载的内容,已经下载的内容,隐私等。所以会有两三个适配器,对应的适配器的”条目“主要在com.errovenus.data中,也就是listview里面显示的”条目“的基本信息;

    com.errovenus.core
        这里面我把程序文件夹创建的累放在这里了,之后也会把数据库具体数据的操作类从com.errovenus.data移动到这里;因为core主要是业务核心相关,涉及到具体的业务操作,会放到这里,个人习惯或者规定吧。

    
像其它的也可以优化,扩展,好的结构可能需要很长的时间去构思。
    最后基本的内容结构大体如下 - 后续肯定还会做优化(里面有一些是之前做项目积累下来的一些工具类 MD打头的):
        bubuko.com,布布扣
             bubuko.com,布布扣
             bubuko.com,布布扣

    

仿迅雷之Anroid版-工程结构

原文:http://blog.chinaunix.net/uid-25799257-id-4724749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!