您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Android中怎么使用Thread和Handler實現網絡編程,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
MainActivity.java
package com.example.justyu.login_demo; import android.app.Activity; import android.app.ProgressDialog; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.justyu.login_demo.Sercice.ServiceException; import com.example.justyu.login_demo.Sercice.UserService; import com.example.justyu.login_demo.Sercice.UserServiceImp; import java.lang.ref.WeakReference; public class MainActivity extends ActionBarActivity implements View.OnClickListener{ private EditText loginName,loginPassword; private Button loginButton; private static final int login_success=1; private static final String MSG_LOGIN_ERROR="登陸失敗!"; private static final String MSG_LOGIN_SUCCESS="登陸成功!"; public static final String msg_login_failed="登錄名或密碼錯誤!!"; private static ProgressDialog dialog; //接口 的實現 private UserService userService=new UserServiceImp(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loginName=(EditText)this.findViewById(R.id.editText); loginPassword=(EditText)this.findViewById(R.id.editText2); loginButton=(Button)this.findViewById(R.id.button); loginButton.setOnClickListener(this); } //點擊登陸按鈕 后進行的操作 @Override public void onClick(View v) { final String Name=loginName.getText().toString().trim(); final String Password=loginPassword.getText().toString().trim(); /** * 登陸驗證 */ if(dialog==null){ dialog=new ProgressDialog(MainActivity.this); dialog.setTitle("等待"); dialog.setMessage("登錄中。。。。。"); dialog.setCancelable(true); dialog.show(); } //副線程 Thread thread=new Thread(new Runnable() { @Override public void run() { try{ userService.userLogin(Name,Password); //發送消息 handler.sendEmptyMessage(login_success); }//業務邏輯異常 catch (ServiceException e){ e.printStackTrace(); //發送消息 Message msg=new Message(); Bundle data=new Bundle(); data.putSerializable("ERROR_MSG",e.getMessage()); msg.setData(data); //傳過去的是0 handler.sendMessage(msg); } catch (Exception e){ e.printStackTrace(); //發送消息 Message msg=new Message(); Bundle data=new Bundle(); data.putSerializable("ERROR_MSG",MSG_LOGIN_ERROR); msg.setData(data); //傳過去的是0 handler.sendMessage(msg); } } }); thread.start(); } private void showTip(String str){ Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); } /** * 主線程與副線程之間的通信 Handler */ private static class MyHandler extends Handler{ private final WeakReference<Activity> myActivity; public MyHandler(MainActivity activity){ myActivity=new WeakReference<Activity>(activity); } @Override public void handleMessage(Message msg) { //可以引用MainActivity的 // 方法引用((MainActivity)myActivity.get()). if(dialog!=null){ dialog.dismiss(); } int flag=msg.what; switch (flag){ case 0: String errorMsg=(String)msg.getData().getSerializable("ERROR_MSG"); ((MainActivity)myActivity.get()).showTip(errorMsg); break; case login_success: ((MainActivity)myActivity.get()).showTip(MSG_LOGIN_SUCCESS); break; default: break; } } } private MyHandler handler=new MyHandler(this); }
userService.java
package com.example.justyu.login_demo.Sercice;
/**
* Created by JustYu on 2015/4/9.
*/
public interface UserService {
public void userLogin(String loginName,String loginPassword) throws Exception;
}
UserServiceImp.java
package com.example.justyu.login_demo.Sercice; import android.util.Log; import com.example.justyu.login_demo.MainActivity; /** * Created by JustYu on 2015/4/9. */ public class UserServiceImp implements UserService { @Override public void userLogin(String loginName, String loginPassword) throws Exception { Log.d("Yu",loginName); Log.d("Yu",loginPassword); Thread.sleep(3000); //與服務器端交互 if(loginName.equals("1")&&loginPassword.equals("1")){ }else{ throw new ServiceException(MainActivity.msg_login_failed); } } }
以上就是Android中怎么使用Thread和Handler實現網絡編程,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。