项目结构
Model层
INetModel
package com.example.admin.mvpsample1.Model;
public interface INetModel {
void askForNet(NetSourceCallBack callBack);
}
接口的实现类
public class NetModel implements INetModel {
private String steamData = "";
private String newsData = "";
private HttpUrlUtils netUtils;
private ThreadPoolManager threadPool;
private String steamUrL = "xxxxx";
private String newsUrl = "xxxxxx";
Handler handler = new Handler();
@Override
public void askForNet(final NetSourceCallBack callBack) {
netUtils = new HttpUrlUtils();
threadPool = ThreadPoolManager.getInstance();
SteamTask steamTask = new SteamTask();
NewsTask newsTask = new NewsTask();
threadPool.putExecutableTasks(steamTask);
threadPool.putExecutableTasks(newsTask);
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (steamData != null && newsData != null) {
callBack.onSuccess(steamData, newsData);
}
if (steamData != null && newsData == null) {
callBack.onFailure("新闻数据请求失败");
}
if (steamData == null && newsData != null) {
callBack.onFailure("steam数据请求失败");
} else {
callBack.onFailure("连接超时,请检查网络环境");
}
}
}, 2000);
}
class SteamTask implements Runnable {
@Override
public void run() {
steamData = netUtils.askFromSteam(steamUrL);
}
}
class NewsTask implements Runnable {
@Override
public void run() {
newsData = netUtils.askFromJvHeNews(newsUrl);
}
}
}
NetSourceCallBack
package com.example.admin.mvpsample1.Model;
public interface NetSourceCallBack {
void onSuccess(String steam,String newsData);
void onFailure(String errorCode);
}
INetPresent
package com.example.admin.mvpsample1.Presenter;
public interface INetPresent {
void askForNet();
}
实现类
public class NetPresenter implements INetPresent {
private ShowNetData showNetview;
private NetModel netModel;
public NetPresenter(ShowNetData showNetview,NetModel netModel){
this.showNetview=showNetview;
this.netModel=netModel;
}
@Override
public void askForNet() {
showNetview.showLoading("加载中");
netModel.askForNet(new NetSourceCallBack() {
@Override
public void onSuccess(String steam, String newsData) {
showNetview.hideLoading();
showNetview.showResult("加载成功");
showNetview.setData(steam,newsData);
}
@Override
public void onFailure(String errorCode) {
showNetview.hideLoading();
showNetview.showResult("加载失败");
}
});
}
}
ShowNetData
package com.example.admin.mvpsample1.View;
public interface ShowNetData {
void showLoading(String msg);
void hideLoading();
void showResult(String result);
void setData(String steam,String news);
}
Activity
public class NetActivity extends AppCompatActivity implements ShowNetData{
private TextView textSteam;
private TextView textJvHe;
private NetPresenter presenter;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_net);
inintView();
presenter.askForNet();
}
private void inintView(){
textSteam=findViewById(R.id.tt1);
textJvHe=findViewById(R.id.tt2);
progressDialog = new ProgressDialog(this);
presenter = new NetPresenter(this, new NetModel());
}
@Override
public void showLoading(String msg) {
progressDialog.setMessage(msg);
if (!progressDialog.isShowing()){
progressDialog.show();
}
}
@Override
public void hideLoading() {
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
@Override
public void showResult(String result) {
Toast.makeText(NetActivity.this,result,Toast.LENGTH_SHORT).show();
}
@Override
public void setData(String steam, String news) {
textJvHe.setText(news);
textSteam.setText(steam);
}
}