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);
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)