PDA

View Full Version : تابع obtainMessage



smemamian
جمعه 15 آذر 1392, 12:48 عصر
سلام

این تابع obtainMessage چی کار می کنه (خط 61) ؟ چه نیازی بود که این تابع فراخوانی شده؟ :

package com.androidexample.threadhandler;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class ThreadHandlerAndroidExample extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android_example_thread_han dler);

final Button GetServerData = (Button) findViewById(R.id.GetServerData);


// On button click call this listener
GetServerData.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//ALERT MESSAGE
Toast.makeText(getBaseContext(),
"Please wait, connecting to server.",
Toast.LENGTH_SHORT).show();
// Create Inner Thread Class
Thread background = new Thread(new Runnable() {

private final HttpClient Client = new DefaultHttpClient();
private String URL = "http://google.com";

// After call for background.start this run method call
public void run() {
try {

String SetServerString = "";
HttpGet httpget = new HttpGet(URL);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
SetServerString = Client.execute(httpget, responseHandler);
threadMsg(SetServerString);

} catch (Throwable t) {
// just end the background thread
Log.i("Animation", "Thread exception " + t);
}
}

private void threadMsg(String msg) {
if (!msg.equals(null) && !msg.equals("")) {
Message msgObj = handler.obtainMessage();
Bundle b = new Bundle();
b.putString("message", msg);
msgObj.setData(b);
handler.sendMessage(msgObj);
}
}

// Define the Handler that receives messages from the
// thread and update the
// progress
private final Handler handler = new Handler() {
public void handleMessage(Message msg) {

String aResponse = msg.getData().getString("message");

if ((null != aResponse)) {
//ALERT MESSAGE
// Toast.makeText(
// getBaseContext(),
// "Server Response: "+aResponse,
// Toast.LENGTH_SHORT).show();

Intent intent = new Intent(getBaseContext(),web.class);
intent.putExtra("url", aResponse);
startActivity(intent);
}
else
{
//ALERT MESSAGE
// Toast.makeText(
// getBaseContext(),
// "Not Got Response From Server.",
// Toast.LENGTH_SHORT).show();
}

}
};

});
// Start Thread
background.start(); //After call start method thread called run Method
}
});

}



}