清单文件
<uses-permission android:name="android.permission.INTERNET" />
callback
public interface MyCallback {
void setData(Object data);
}
VIew
public interface IView {
void setData(Object data);
}
NetUtil
public class NetUtil {
public static String setResult(String path){
String result="";
try {
URL url=new URL(path);
HttpURLConnection http= (HttpURLConnection) url.openConnection();
int responseCode = http.getResponseCode();
if (responseCode==200){
result=stringTo(http.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private static String stringTo(InputStream inputStream) throws IOException {
InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader br=new BufferedReader(inputStreamReader);
StringBuilder builder=new StringBuilder();
for (String t=br.readLine();t!=null;t=br.readLine()){
builder.append(t);
}
return builder.toString();
}
}
Model
public interface Model {
void setRequestData(String path, Class clazz, MyCallback myCallback);
}
Modelimpl
public class Modelimpl implements Model{
private MyCallback callback;
@SuppressLint("StaticFieldLeak")
@Override
public void setRequestData(String path, final Class clazz, MyCallback myCallback) {
callback=myCallback;
new AsyncTask<String,Void,Object>(){
@Override
protected Object doInBackground(String... strings) {
return setResult(strings[0],clazz);
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
callback.setData(o);
}
}.execute(path);
}
public <T> T setResult(String path,Class clazz){
String json = NetUtil.setResult(path);
Gson gson=new Gson();
T t = (T) gson.fromJson(json, clazz);
return t;
}
}
Presenter
public interface Presenter {
void setRequestData(String path,Class clazz);
}
Presenterimpl
public class Presenterimpl implements Presenter{
private IView iView;
private Model model;
public Presenterimpl(IView iView) {
this.iView = iView;
model=new Modelimpl();
}
@Override
public void setRequestData(String path, Class clazz) {
model.setRequestData(path, clazz, new MyCallback() {
@Override
public void setData(Object data) {
iView.setData(data);
}
});
}
public void des(){
if (iView!=null){
iView=null;
}
if (model!=null){
model=null;
}
}
}