仿迅雷之Anroid版-工程结构
时间:2014-12-31 02:22:38
收藏:0
阅读:345
一般开发的时候,我喜欢想好基本的功能模块,做Anroid一般就是想好有哪些功能,想好需要用到哪些开源的库,想好需要哪些最基本的功能类; 比如文件的操作,Bitmap的操作,Sqlite的操作,UI的自定义,屏幕的基本信息等。 所以一般我会分为下面几个部分(这也是做了几个小项目慢慢积累的一些东西): 同样: 高手可以指点指点,或者飘过~~~ 等项目完成之后我们会项目发布到github上面,写的虽然很烂,但是对于我们这些初学者应该还是可以参考的。

顺便提下,消息推送用的是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之后跳转):
相信应该还是实用的。
com.errorvenus.log
自定义日志类,主要是方便自定义日志的输出,同时,增加崩溃捕获的一个功能,上传到后台服务器,方便查阅;我知道有人喜欢用System.out输出,但是日志多了之后,去挨个删除很费劲。 而且还会漏掉,所以如果自定义的话,就可以把自定义的接口注释掉,这样很容易找到哪些地方打了日志; 日志多了其实会影响性能的。 可能有些用会很好用的日志库,或者说使用像友盟这样的平台。
com.errovenus.listen
虽然这个工程只有一个主界面,但是功能区还是有三四个,左边菜单功能区,自定义标题栏功能区,中间内容功能区,应用中心功能区,我们不可能把所有的监听事件都搞到一个类里面,这样代码太庞大,维护起来很费劲,所以需要单独把事件提出来,每个功能监听处理处理一个功能区。 当前像内容功能区是没有单独的监听处理的,而是放到了Adapter中处理:原因是左边菜单栏的监听处理后的结构是通过内容功能区去显示的,是通过适配器的方式进行的,所以内容的点击处理都是再适配器里面做的。
com.errovenus.adapter
这里面就主要是为菜单栏功能实现做的。主要是正在下载的内容,已经下载的内容,隐私等。所以会有两三个适配器,对应的适配器的”条目“主要在com.errovenus.data中,也就是listview里面显示的”条目“的基本信息;
com.errovenus.core
这里面我把程序文件夹创建的累放在这里了,之后也会把数据库具体数据的操作类从com.errovenus.data移动到这里;因为core主要是业务核心相关,涉及到具体的业务操作,会放到这里,个人习惯或者规定吧。
像其它的也可以优化,扩展,好的结构可能需要很长的时间去构思。
最后基本的内容结构大体如下 - 后续肯定还会做优化(里面有一些是之前做项目积累下来的一些工具类 MD打头的):




顺便提下,消息推送用的是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之后跳转):
点击(此处)折叠或打开
-
public abstract class MDSplashActivity extends Activity
-
{
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState)
-
{
-
// TODO Auto-generated method stub
-
super.onCreate(savedInstanceState);
-
-
///< 开机动画
-
View view = LayoutInflater.from(this).inflate(setLayoutId(), null);
-
setContentView(view);
-
AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f,0.0f);
-
alphaAnimation.setDuration(5000);
-
view.startAnimation(alphaAnimation);
-
-
///< 异步初始化
-
new Thread(new Runnable()
-
{
-
@Override
-
public void run()
-
{
-
handler();
-
}
-
}).start();
-
-
new Handler().postDelayed(new Runnable()
-
{
-
public void run()
-
{
-
Intent mainIntent = new Intent(MDSplashActivity.this, setToActivity());
-
MDSplashActivity.this.startActivity(mainIntent);
-
MDSplashActivity.this.finish();
-
}
-
-
}, 5000);
-
};
-
-
/**
-
* 除显示和跳转外的额外处理
-
*/
-
public abstract void handler();
-
-
/**
-
* 提供一个要渐隐的view
-
* @return
-
*/
-
public abstract int setLayoutId();
-
-
/**
-
* 设置要跳转的Activity.class
-
* @return
-
*/
- 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打头的):



原文:http://blog.chinaunix.net/uid-25799257-id-4724749.html
评论(0)