Android 는 PHP 서버 를 통 해 로그 인 기능 을 수행 합 니 다.
실현 원리 도:
Handler 메시지 메커니즘 원리:
Handler 메커니즘 은 주로 Message,Handler,Message Queue,Looper 등 네 가지 관건 적 인 대상 을 포함한다.
다음은 이 네 개의 관건 적 인 대상 에 대해 간단하게 소개 한다.
1.Message
Message 는 스 레 드 간 에 전달 되 는 메시지 로 내부 에 소량의 정 보 를 가지 고 서로 다른 스 레 드 간 에 데 이 터 를 교환 할 수 있 습 니 다.Message 의 what 필드 는 정형 데 이 터 를 휴대 할 수 있 고 obj 필드 는 Object 대상 을 휴대 할 수 있 습 니 다.
2.Handler
Handler 는 메 시 지 를 보 내 고 메 시 지 를 처리 하 는 데 주로 사용 된다 는 뜻 이다.일반적으로 Handler 대상 의 sendmessage()방법 으로 메 시 지 를 보 내 고 보 내 는 메 시 지 는 일련의 전전 처 리 를 거 쳐 최종 적 으로 Handler 대상 의 HandlerMessage()방법 에 전달 된다.
3.MessageQueue
Message Queue 는 메시지 큐 라 는 뜻 으로 Handler 를 통 해 보 낸 메 시 지 를 저장 하 는 데 사 용 됩 니 다.Handler 를 통 해 보 내 는 메 시 지 는 Message Queue 에서 처 리 를 기다 리 고 있 습 니 다.스 레 드 마다 message Queue 대상 만 있 습 니 다.
4.Looper
Looper 는 모든 스 레 드 에 있 는 Message Queue 의 집사 입 니 다.Looper 의 loop()방법 을 호출 하면 무한 순환 에 들 어 갑 니 다.그리고 Message Queue 에 메시지 가 있 는 것 을 발견 할 때마다 이 를 꺼 내 Handler 의 HandlerMessage()방법 에 전달 합 니 다.그 밖 에 모든 스 레 드 에 Looper 대상 만 있 습 니 다.메 인 스 레 드 에서 Handler 대상 을 만 들 때 시스템 은 Looper 아연 도금 을 만 들 었 기 때문에 Looper 대상 을 수 동 으로 만 들 지 않 고 하위 스 레 드 에 있 는 Handler 대상 은 Looper.loop()방법 으로 메시지 순환 을 시작 해 야 합 니 다.
그림 에서 전체 Handler 메시지 처리 절 차 를 뚜렷하게 볼 수 있다.Handler 메시지 처 리 는 먼저 UI 스 레 드 에 Handler 대상 을 만 든 다음 하위 스 레 드 에서 sendmessage()방법 을 호출 합 니 다.이 어 이 메 시 지 는 UI 스 레 드 의 Message Queue 에 저 장 됩 니 다.Looper 대상 을 통 해 Message Queue 의 메 시 지 를 꺼 내 고 마지막 으로 Handler 의 HandMessage()방법 에 배 포 됩 니 다.
다음은 제 가 쓴 코드 와 이 프로그램의 logcat 실행 결과 입 니 다.
이번 퀘 스 트 에서 만난 난제:
PHP 서버 에 연결 할 수 없습니다.본인 이 입력 한 아 이 디 와 비밀 번 호 를 JSON 으로 봉 인 했 지만 PHP 로 보 낼 수 없습니다. 창고 의 비교 에 의 하면.
package com.itcast.test03;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_userPsd;
private Button login;
private Button signUp;
private CheckBox save;
private String user,pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username = (EditText)findViewById(R.id.et_number);
et_userPsd = (EditText)findViewById(R.id.et_password);
login=(Button)findViewById(R.id.login);
signUp=(Button)findViewById(R.id.signUp);
save = (CheckBox)findViewById(R.id.save);
//
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//
String name =et_username.getText().toString();
String pwd = et_userPsd.getText().toString();
// login
login(name, pwd);
}
});
}
private void login(final String name, final String pwd){
// Handler
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == 1){
Toast.makeText(MainActivity.this, " ", Toast.LENGTH_SHORT).show();
//
finish();
}else if(msg.what == 0){
Log.i(name, msg.toString());
}else if(msg.what == -1){
Log.i("==============",msg.toString());
}
}
};
new Thread(){
public void run() {
// Message
Message msg =new Message();
try {
Post po = new Post();
String infoo = po.logina(name, pwd);
if(infoo != null){
msg.what = 1;//
msg.obj = infoo;
}else{
msg.what = 0;//
msg.obj = "2";
}
} catch (Exception e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
handler.sendMessage(msg);
}
}.start();
}
}
package com.itcast.test03;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class Post {
public String logina(String name, String pwd)throws ParseException, IOException, JSONException{
// HttpClient
HttpClient httpClient = new DefaultHttpClient();
String strurl = "http://10.6.78.213:2016/xampp/sse/index.php/home/Index/server_info";
HttpPost request = new HttpPost(strurl);
request.addHeader("Accept","application/json");
request.addHeader("Content-Type","application/json");// header
JSONObject param = new JSONObject();// json
param.put("sequenceId", "87620056570355357690");
param.put("accType", "0");
param.put("loginId", name);
param.put("password", pwd);
//param.put("thirdpartyAppId", "");
//param.put("thirdpartyAccessToken", "");
param.put("loginType", "1");
Log.i("===========", param.toString());
System.out.println("1+===========");
StringEntity se = new StringEntity(param.toString());
request.setEntity(se);//
HttpResponse httpResponse = httpClient.execute(request);//
System.out.println("2+===========");// 。
int code = httpResponse.getStatusLine().getStatusCode();
System.out.print(code);
String result = EntityUtils.toString(httpResponse.getEntity());
JSONObject result1 = new JSONObject(result);
String info = (String) result1.get("retInfo");
Log.i("=============", info);
return info;
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.