MVP
BaseActivity
package com. example. framework ;
import android. os. Bundle ;
import android. widget. Toast ;
import androidx. annotation. Nullable ;
import androidx. appcompat. app. AppCompatActivity ;
import com. example. framework. manager. CacheManager ;
import com. example. framework. manager. ShopManager ;
import com. example. framework. view. LoadingPage ;
import com. example. framework. view. ToolBar ;
public abstract class BaseActivity < P extends BasePresenter > extends AppCompatActivity implements ToolBar. IToolbarListener , ShopManager. IConnectListener {
protected P httpPresenter;
protected ToolBar toolBar;
protected LoadingPage loadingPage;
@Override
protected void onCreate ( @Nullable Bundle savedInstanceState) {
super . onCreate ( savedInstanceState) ;
setContentView ( loadingPage = new LoadingPage ( this ) {
@Override
protected int getSucessLayout ( ) {
return getLayoutId ( ) ;
}
} ) ;
initView ( ) ;
toolBar = findViewById ( R . id. toolbar) ;
toolBar. setToolbarListener ( this ) ;
initPresenter ( ) ;
initData ( ) ;
ShopManager . getInstance ( ) . registerConnectListener ( this ) ;
CacheManager . getInstance ( ) . addActivityList ( this ) ;
}
protected abstract int getLayoutId ( ) ;
protected abstract void initData ( ) ;
protected abstract void initPresenter ( ) ;
protected abstract void initView ( ) ;
@Override
protected void onDestroy ( ) {
super . onDestroy ( ) ;
destroy ( ) ;
}
public void destroy ( ) {
CacheManager . getInstance ( ) . removeActivityList ( this ) ;
ShopManager . getInstance ( ) . unregisterConnectListener ( this ) ;
if ( httpPresenter != null ) {
httpPresenter. detachView ( ) ;
httpPresenter = null ;
}
}
@Override
public void onLeftImgClick ( ) {
finish ( ) ;
}
@Override
public void onCenterTitleClick ( ) {
}
@Override
public void onRightImgClick ( ) {
}
@Override
public void onRightTitle ( ) {
}
@Override
public void onConnected ( ) {
Toast . makeText ( this , "有网" , Toast . LENGTH_SHORT) . show ( ) ;
}
@Override
public void onDisconnected ( ) {
Toast . makeText ( this , "没网" , Toast . LENGTH_SHORT) . show ( ) ;
}
@Override
protected void onResume ( ) {
super . onResume ( ) ;
}
@Override
protected void onPause ( ) {
super . onPause ( ) ;
}
}
BasePresenter
public class BasePresenter < V > {
protected V iView;
private List < Disposable > disposableList = new ArrayList < > ( ) ;
public synchronized void add ( Disposable disposable) {
disposableList. add ( disposable) ;
}
public void attachView ( V iView) {
this . iView = iView;
}
public void detachView ( ) {
if ( this . iView!= null )
this . iView = null ;
for ( Disposable disposable : disposableList) {
if ( disposable. isDisposed ( ) ) {
disposable. dispose ( ) ;
}
}
}
}
IBaseView
public interface IBaseView {
void showLoading ( ) ;
void hideLoading ( ) ;
void Error ( String error) ;
}
api 'io.reactivex.rxjava2:rxjava:2.2.6'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
api 'com.squareup.okhttp3:okhttp:3.12.1'
api 'com.squareup.okhttp3:logging-interceptor:3.11.0'
api 'com.squareup.retrofit2:retrofit:2.6.2'
api 'com.squareup.retrofit2:converter-gson:2.6.2'
api 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.0'
implementation 'com.github.bumptech.glide:glide:4.12.0'