android app模块划分,Android APP 登陆模块

首先我想强调一点,这个登陆的模块最好是放在另外一个线程里面来实现,否则有可能会爆出一系列的问题,

然后再与主UI 交互。这样就不会爆ANR异常

1.对于登陆模块的,首先大体的逻辑肯定是要清晰的。

//在这个登陆另起的线程中

//第一步首先要判断 是否有网络存在

//第二步分别对 是否有网络做相应的处理

//第三步分别对 有网络做相应的处理

//第四步分别对 没有网络做相应的处理

2.确定登陆逻辑之后接下来是如何实现功能的问题,下面我给出最主要的核心代码

a.判断 是否有网络存在

/**

* 判断当前环境下网络是否可用

*

* @param context

* @return true 可用  false 不可用

*/

public static boolean isNetworkAvailable(Context context) {

ConnectivityManager mConnectivity = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

TelephonyManager mTelephony = (TelephonyManager) context

.getSystemService(Context.TELEPHONY_SERVICE);

// 检查网络连接,如果无网络可用,就不需要进行连网操作等

NetworkInfo info = mConnectivity.getActiveNetworkInfo();

if (info == null || !mConnectivity.getBackgroundDataSetting()) {

return false;

}

// 判断网络连接类型,只有在3G或wifi里进行一些数据更新。

int netType = info.getType();

int netSubtype = info.getSubtype();

if (netType == ConnectivityManager.TYPE_WIFI) {

return info.isConnected();

} else if (netType == ConnectivityManager.TYPE_MOBILE

&& netSubtype == TelephonyManager.NETWORK_TYPE_UMTS

&& !mTelephony.isNetworkRoaming()) {

return info.isConnected();

} else {

return false;

}

}

b.如果是网络可用的话,则继续下一步;如果没有网络的话,就Toast提醒用户开启网络

/**      * 根据用户名和密码登陆      *      * @param uname      * @param pwd      */     private void login(String uname, String pwd) {         try {             HttpParams httpParams = new BasicHttpParams();             HttpConnectionParams.setConnectionTimeout(httpParams, 10000);             HttpConnectionParams.setSoTimeout(httpParams, 10000);                          HttpClient httpclient = new DefaultHttpClient(httpParams);             String uri = "http://xxx.xxx.xxx.xxxx:8080/api/v1/auth/login";             HttpPost httppost = new HttpPost(uri);             //添加http头信息             httppost.addHeader("Content-Type", "application/json");             //http post的json数据格式: {"id":"TOD4727","passwd":"8111668ebce8f8d27fc2f98391cf20c1"}             JSONObject obj = null;             HttpResponse response = null;             obj = new JSONObject();             obj.put("id", uname);             obj.put("passwd", MD5.GetMD5Code(pwd)); //            System.out.println("-----post the data is  ++++ " + obj.toString());             httppost.setEntity(new StringEntity(obj.toString()));                 response = httpclient.execute(httppost);             int code = response.getStatusLine().getStatusCode();                          if (200 == code) { //访问正常                 String rev = EntityUtils.toString(response.getEntity());//返回json格式:{"code":"1000","message":"ok","description":""}                 System.out.println("-----get the data is  ++++  " + rev);                 obj = new JSONObject(rev);                 String resCode = obj.getString("code");                                  if("1000".equals(resCode)){//用户名和密码正确                     rememberUsernameAndPassword();                     Intent mainIntent = new Intent(LoginActivity.this, MainActivity.class);                     startActivity(mainIntent);                     finish();                 }else if("1002".equals(resCode)){//用户名不存在                     Message msg = handler.obtainMessage();                     msg.what = USER_NOT_EXIST;                     handler.sendMessage(msg);                 }else if("1003".equals(resCode)){//密码错误                     Message msg = handler.obtainMessage();                     msg.what = ERROR_PASSWORD;                     handler.sendMessage(msg);                 }                              }else{//访问出现异常                 Message msg = handler.obtainMessage();                 msg.what = NET_PROBLEM;                 handler.sendMessage(msg);             }         } catch (Exception e) {//访问出现异常             // TODO Auto-generated catch block             Message msg = handler.obtainMessage();             msg.what = NET_PROBLEM;             handler.sendMessage(msg);             e.printStackTrace();         }     }     //这些handler发送的信息交付给handler去处理,做出相应的处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值