package cn.edu.nuc.WhatIsNew;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import android.app.Activity;
import cn.edu.nuc.model.News;
import cn.edu.nuc.service.*;
/**
* 本次更新做了很多注解在类体和方法上,还添加了几个服务类,与服务器连接的类进行了重构,
* 由于在 Team>提交>评论 中并不能很好的查看和展示这些新添加的东西,
* 所以建立该演示文件,说明、演示新添加的几个服务类的使用方法
* @author 蓝枫铭
*/
public class What_Is_New_01 {
static Activity context;
static String url = "";
//======================================
/**
* 添加"service.AppConfig.java",该类负责完成配置文件中数据的读取、写入等操作
*/
/**
* 向配置文件中写入一个键值对
* 注意:使用时需传入当前Activi对象(context)
*/
public static void write_to_config(String key, String value){
AppConfig.getAppConfig(context).set(key, value);
}
/**
* 从配置文件读取某一个键所对应的值,如 读取用户名
* 注意:使用时需传入当前activity对象(context),以及索引的键名
*/
public static String get_Value_ByKey(String username){
String usrname = AppConfig.getAppConfig(context).get(username);
return usrname;
}
/**
* 还可以批量删除给定键名的键值对,详见Appconfig.java
* 最后注意:读取、写入键值对数据时,最好在Appconfig.java中声明一个全局静态变量作为键名,
* 一来赵yue改接口方便改,二来防止键名写错而出错
*/
//======================================
/**
* 重构service.ConnWithService.java 类,
* 将数据的发送,服务器内容的请求,以及服务器响应信息的处理这几个模块分离出来,作为最基本的方法被其他方法调用
* 请求新闻数据时,只需要分别调用以下两个方法,便可完成所有请求信息,为什么?
*/
/**
* 1,向服务器请求新闻数据;
* 请求新闻数据,无非出于两个目的:要么刷新页面(第一次载入也算刷新),要么获得更多新闻,
* 我们请求的新闻地址,也就可以根据这两个目的而唯一确定
* 根据赵Yue提供的接口,获取数据的方法为:
* http://wlw.24gtd.com/GetNewsJson.ashx? type=ANews &count=3 &page=1
* [域名(形如www.24gtd.com)] + [Action(形如GetNewsJson.ashx)] + [新闻类型(形如公司新闻)] + [请求新闻的数量Count] + [请求的页码Page]
* 域名、action、新闻类型都可以根据请求的类型而唯一确定,
* 剩下的请求数量count是全局final变量,唯一确定,不可改变
* 最后一项,请求的页码page会根据 【刷新页面】或者【获得更多】的不同请求,作出自增(page++)或者恢复初始值(page=1)的动作
* 所以,所有的新闻请求,都可以通过为以下两个方法完成:
* @throws JSONException
*/
public static List<News> get_list_news_refresh() throws JSONException{
return NewsFactory.getNewsList_Refresh( NewsFactory.LoadNewsRefresh);
}
public static List<News> get_list_news_more() throws JSONException{
return NewsFactory.getNewsList_More( NewsFactory.LoadNewsGetMore);
}
/**
* 2,向服务器发送一组数据
*/
public static void sendSomeDataToServer(){
List<NameValuePair> nvp = new ArrayList<NameValuePair>();
nvp.add( new BasicNameValuePair("key1", "value1"));
nvp.add( new BasicNameValuePair("key1", "value1"));
nvp.add( new BasicNameValuePair("key1", "value1"));
ConnWithServer.sendRequest(url, nvp);
}
/**
* 3,发送请求后,处理服务器的响应信息;
* 封装了一个ResponseBeans(响应实体)类,类中包含了两个变量:
* 服务器返回的状态码,服务器返回的内容
*/
public static void handleResponse(){
//需要先请求数据,这里以get方法为例
HttpResponse response = ConnWithServer.sendRequest(url);
ConnWithServer.ResponseBeans beans = ConnWithServer.handleResponse(response);
beans.getStatusCode();
beans.getStrBuffer(); //新闻列表的json数据就是从该方法中获得的
}
//======================================
/**
* 添加service.UIHelper.java
* 在此类中,定义了一些全局静态常量,一来增强代码易读性,二来减少粗心写错变量的可能
*/
public static void showToast(){
UIHelper.showToast(context, "toast", UIHelper.ToastLong);
}
public static void getStringLength(){
UIHelper.getStrlen("Hello World!");
}
//======================================
/**
* 我负责的企业文化部分
* 由于赵yue只提供了员工天气(微博形式)接口,所以只做了这一部分.
* 剩下的 文化天地 ,有数据后可以再取,领导寄语,则是千年不变,所以本地设置好,就可以了
*
* 员工天气 部分
* 1,使用了下拉刷新控件,可以实现下拉刷新,列表尾部有 加载更多 按钮;
* 点击头部可以滚动到顶部;
*
* 2,添加了写心情、状态,并发送的页面,可以设置用户名,点击用户名更改.
*/
} //class.end以下是我负责部分的截图:

本文介绍了安卓应用中服务类的重构与优化过程,包括配置文件读写、服务器交互及UI辅助工具的改进。详细展示了如何通过模块化设计提高代码的可维护性和扩展性。
1190

被折叠的 条评论
为什么被折叠?



