mvp契约类
其他
2018-09-15 10:24:47
阅读次数: 0
public class MainActivity extends AppCompatActivity implements IContract.IView {
private IContract.IPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
presenter = new PresenterImpl();
presenter.attachView(this);
}
@Override
public void requestDataPre(final String ss) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, ss, Toast.LENGTH_SHORT).show();
}
});
}
public void login(View view) {
presenter.requestDataPre();
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.detachView(this);
}
}
public interface IContract {
interface IModel {
interface ResponseStr{
void sendMMsg(String ss);
}
void requestDataMod(ResponseStr responseStr);
}
interface IPresenter<IView> {
void detachView(IView iView);
void attachView(IView iView);
void requestDataPre();
}
interface IView {
void requestDataPre(String ss);
}
}
public class ModelImpl implements IContract.IModel {
@Override
public void requestDataMod(final ResponseStr responseStr) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
String ss="hahaha";
responseStr.sendMMsg(ss);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
public class PresenterImpl implements IContract.IPresenter<IContract.IView> {
IContract.IView iView;
private IContract.IModel model;
private WeakReference<IContract.IView> iViewWeakReference;
private WeakReference<IContract.IModel> iModelWeakReference;
@Override
public void attachView(IContract.IView iView) {
this.iView = iView;
model = new ModelImpl();
iViewWeakReference = new WeakReference<>(iView);
iModelWeakReference = new WeakReference<>(model);
}
@Override
public void detachView(IContract.IView iView) {
iViewWeakReference.clear();
iModelWeakReference.clear();
}
@Override
public void requestDataPre() {
model.requestDataMod(new IContract.IModel.ResponseStr() {
@Override
public void sendMMsg(String ss) {
iView.requestDataPre(ss);
}
});
}
}
转载自blog.csdn.net/zzf0521/article/details/82596139