`
iaiai
  • 浏览: 2143656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android中的mvp模式(二)

阅读更多
1. 需求,这个是《android开发必知的50个诀窍》一书中的mvp章节的需求。
在splash页面中,判断是否有网络连接,有则跳到下个页面,无则弹出一条消息通知用户,同时在检查网络是否正常的期间显示一个进度条。

2. 类目录结构

3. model接口和实现
public interface INetConnect {  
     boolean isNetConnect( Context context);  
}  
public class NetConnect implements INetConnect {  
  
     @Override  
     public boolean isNetConnect(Context context) {  
            if (context != null) {  
                ConnectivityManager mConnectivityManager = (ConnectivityManager) context  
                          .getSystemService(Context. CONNECTIVITY_SERVICE);  
                NetworkInfo mNetworkInfo = mConnectivityManager  
                           .getActiveNetworkInfo();  
                 if (mNetworkInfo != null) {  
                      return mNetworkInfo.isAvailable();  
                }  
           }  
            return false;  
     }  
  
}

4. view接口
public interface ISplashView {  
     void showProcessBar();  
     void hideProcessBar();  
     void showNetError();  
     void startNextActivity();  
}

5. presenter实现
public class SplashPresenter {  
     private INetConnect connect;  
     private ISplashView iView;  
       
     public SplashPresenter(ISplashView iView){  
            this. iView = iView;  
            connect = new NetConnect();  
     }  
       
     public void didFinishLoading(Context context){  
            iView.showProcessBar();  
            if( connect.isNetConnect(context)){  
                 iView.startNextActivity();  
           } else{  
                 iView.showNetError();  
           }  
            iView.hideProcessBar();  
     }  
}

6.activity中代码
public class MainActivity extends Activity implements ISplashView{  
  
     SplashPresenter presenter;  
     private ProgressDialog progressBar;  
     @Override  
     protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
           setContentView(R.layout. activity_main);  
             
            presenter = new SplashPresenter( this);  
     }  
  
     @Override  
     protected void onResume() {  
            super.onResume();  
            presenter.didFinishLoading( this);  
     }  
       
     @Override  
     public void showProcessBar() {  
            if ( progressBar == null) {  
                 progressBar = new ProgressDialog( this);  
                 progressBar.setCancelable( true);  
                 progressBar.setCanceledOnTouchOutside( true);  
                 progressBar.setMessage( "更新数据中,请稍后" );  
           }  a
            progressBar.show();  
     }  
  
     @Override  
     public void hideProcessBar() {  
            progressBar.hide();  
     }  
  
     @Override  
     public void showNetError() {  
           Toast. makeText(this, "暂无网络", Toast.LENGTH_SHORT).show();  
     }  
  
     @Override  
     public void startNextActivity() {  
           Toast. makeText(this, "跳到下个activity", Toast.LENGTH_SHORT).show();  
     }  
  
}
  • 大小: 3.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics