企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 功能设计 先把app常用的功能进行抽象,主要从Activity Fragment Service等控件进行考虑。 其次完善相关的工具类。主要从代码封装、迭代、可维护性等方面考虑。 ### 抽象 ### Activity的抽象 Activity抽象主要目的是简化具体功能界面的工作量。主要通过代码封装的方式来达到效果。 同时需要处理网络请求、UI刷新等操作 ### Fragment的抽象 Fragment的抽象与activity类似。但不同的是需要处理多个Fragment之间的互相调用,传参方式也不太一样。 ### 工具类 App需要一个管理Activity或者Fragment的工具类,对其做全局的操作(方法调用) 为了减少代码的耦合度。不建议在Activity中直接加static引用。可以通过写一些工具类间接的实现。   Activity中访问网络请求以及回调刷新UI是一件比较繁琐的事儿。常规的做法是new一个Thread是传入一个Handler对象,网络请求完成以后sendMessage刷新。但是这种做法耦合度比较强,而且好多业务逻辑都需要在Activity中处理,代码臃肿   ~~~ private Handler handler; protected void onCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); handler= new handler(){ publicvoid handlerMessage(){ if(msg.what== 1){ //do sth } } } } public class NetRunnable implementsRunnable{ privateHandler handler; publicNetRunnable(Handler handler){ this.handler= handler; } publicvoid run(){ //do sth 处理网络等 Messagemsg = Message.obtain(); msg.what= 1; msg.obj= “网络请求结果”; this.handler.sendMessage(msg); } } ~~~ 建议将网络请求的代码封装一下,  封装后续 ### ActivityMgr 这个类的作用主要是保存app中所有正在运行的Activity的引用。   ~~~ private static Stack<BaseActivity>activities = new Stack<BaseActivity >; public static void push(BaseActivityactivity){ activities.push(activity); } public static void remove(BaseActivityactivity){ activities.remove(activity); } public class BaseActivity extends Activity public void onCreate(BundlesaveInstanceState){ ActivityMgr.push(this); } public void onDestroy(){ ActivityMgr.remove(this); } ~~~ 解析一下为什么onDestroy的时候采用remove方法而不是pop() 防止acitivty AB,   A启动 B  如果此时A#finish调用Stack#pop则会把B的引用移除   Fragment的工具类先略过