android app 程序设计思路小结
一、model设计与实现
建立业务POJO,比如user
public class User{ private int userId; private String userName; public User(int userId, String userName){ this.userId = userId; this.userName = userName; } public void setUserId(int userId){ this.userId = userId; } public void setUserName(String userName){ this.userName = userName; } public int getUserId(){ return this.userId; } public String getUserName(){ return this.userName; }}
二、net网络交互接口设计与实现
1,请求格式定义。
http://192.168.1.31/CommandHandler.ashx{"MessageContent":"{'CourierId':'652','TrackingY':31.174406,'Province':'上海市','District':'闵行区','City':'上海市','TrackingX':121.39061,'Address':'上海市闵行区万源路2163号'}","Passport":"mWEKICmWIVD0YRGXMSRC5HH7SYVMIVlVEGOMRK","Function":"AddCourierTracking","Usage":"User"}
2,返回格式定义
{"ResultFlag":1,"ErrorMessage":null,"Passport":"mWEKICmWIVD0YRGXMSRC5HH7SYVMIVlVEGOMRK","MessageContent":{\"Result\":null,\"ResponseStatus\":{\"ErrorCode\":\"1\",\"Message\":null,\"StackTrace\":null,\"Errors\":null}}}
3,实现方法需要适配多样情形(方法重载),内部实现需要避免重复(内聚)。
public class NetUtil{ public static void doPost(Context context, HashMap<String,String> map, Handler handler, Callback callBack){ doRequest(context, map, handler, callBack); } public static void doGet(Context context, Handler handler, CallBack callBack){ doRequest(context, null, handler, callBack); } private static void doRequest(Context context, HashMap<String,String> map, Handler handler, Callback callBack){ ... }}
三、UI界面框架
1,定义自己的超类,比如MyActivity, MyFragment
public class MyActivity extends Activity{}
2,建立超类链(),分别插入日志、Toast、进度条、导航栏,标题栏等共用UI元素,分开插入是为了方便拓展和去掉。
public class LoggableActivity extends Activity{ protected static String TAG = this.getClass.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LogUtil.log(TAG,"onCreate()"); }}
3,分别实现各个页面,继承自最低级别的超类。
public class LoginActivity extends LoggableActivity{}
4,Adapter,service,broadCast等类似。
四、管理数据
1,使用ContentProvider。
2,使用Sqlite。
3,文件方式存储(SharedPerference、sd卡)需要添加加解密。
4,使用内存缓存策略,比如LRU算法。
五、发布和proguard
1,所有被androidmanifest.xml定义的类不能混淆,所以关键业务逻辑实现要移除被调用类。
2,引用的第三方包不能混淆。