We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
今天决定开始好好研究几个开源的项目。之前朋友推荐过开源中国的客户端写得还不错,代码量不大,结构也很清晰。源码可以直接下载下来,于是决定好好看一下。首先看其net.oschina.app包的结构。
net.oschina.app
AppStart.java
Activity
net.oschina.app.ui
Main.java
AppManager
单例模式
private static AppManager instance;
private static Stack<Activity> activityStack;
//添加Activity到堆栈 public void addActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } //结束当前Activity(堆栈中最后一个压入的) public void finishActivity() { Activity activity = activityStack.lastElement(); finishActivity(activity); } //结束指定的Activity public void finishActivity(Activity activity) { if (activity != null) { activityStack.remove(activity); activity.finish(); activity = null; } } // 退出应用程序 public void AppExit(Context context) { try { finishAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { } }
AppConfig
properties
AppContext
getUserBlogList
getBlogList
getPostList
AppException
Thread.UncaughtExceptionHandler
The text was updated successfully, but these errors were encountered:
No branches or pull requests
今天决定开始好好研究几个开源的项目。之前朋友推荐过开源中国的客户端写得还不错,代码量不大,结构也很清晰。源码可以直接下载下来,于是决定好好看一下。首先看其
net.oschina.app
包的结构。AppStart.java
是程序的入口,用来启动界面的动画,同时负责跳转到主Activity
中,即net.oschina.app.ui
包下面的Main.java
类中。AppManager
是用来对整个应用程序的Activity
进行管理。此处有几点需要记录一下:单例模式
进行实现。此类中的单例模式其实不太严密,但对于手机应用,这样实现完全可以满足要求。关于单例模式的实现可以参看我的另一篇文章[Design-Pattern]-Singletonprivate static AppManager instance;
(为了单例模式的实现),该类只有一个成员变量即一个Activity 栈。即private static Stack<Activity> activityStack;
Activity
进行管理的方法,如添加Activity
,移除Activity
,退出应用程序等。如:AppConfig
中定义了一些应用相关的配置信息,这些信息最终都会写到properties
文件中。AppContext
中用来放应用程序的上下文信息,用来存储全局的配置。并提供了从网络上获取应用所需要的信息的业务相关的方法。如getUserBlogList
,getBlogList
,getPostList
等多种方法。AppException
应用程序的异常类,用来捕获异常并提示错误信息。主要是访问网络和IO相关操作的异常。包括将异常信息存储到文件,发送异常报告到服务器,弹出友好的出错提示等方法。该异常类实现了Thread.UncaughtExceptionHandler
接口。关于Thread.UncaughtExceptionHandler
接口的使用,请参看:[Android]异常的捕获 Thread.UncaughtExceptionHandlerThe text was updated successfully, but these errors were encountered: