http://developer.android.com/reference/android/os/Handler.html
package : android.os
public class
Handler
extends Object
एक हैंडलर आप भेजने के लिए और इस प्रक्रिया संदेश और एक थ्रेड MessageQueue के साथ जुड़े Runnable वस्तुओं की अनुमति देता है। प्रत्येक हैंडलर उदाहरण एक थ्रेड और उस थ्रेड के संदेश कतार से जुड़ा हुआ है। जब आप एक नया हैंडलर बनाते हैं, तो यह उस धागे के थ्रेड/संदेश कतार से जुड़ा होता है जो उस समय से बना रहा है - उस बिंदु से, यह संदेश संदेश और संदेश को उस संदेश कतार में वितरित करेगा और उन्हें संदेश से बाहर आने पर निष्पादित करेगा कतार।
एक हैंडलर के दो मुख्य उपयोग कर रहे हैं:
- संदेश और runnables शेड्यूल करने के लिए भविष्य में किसी समय के रूप में क्रियान्वित किया जा करने के लिए; और
- से अलग थ्रेड पर निष्पादित करने के लिए एक क्रिया को लागू करने के लिए।
उदाहरण के एप्लिकेशन छप पेज में 1
उपयोग हैंडलर।
if (!isFirstIn) {
mHandler.sendEmptyMessageDelayed(GO_HOME, SPLASH_DELAY_MILLIS);
} else {
mHandler.sendEmptyMessageDelayed(GO_GUIDE, SPLASH_DELAY_MILLIS);
}
/**************************************************************************************
*1. Handler
*/
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if(isAuto){
switch (msg.what) {
case GO_HOME:
goHome();
break;
case GO_GUIDE:
goGuide();
break;
}
}
super.handleMessage(msg);
}
};
private void goHome() {
Intent intent = new Intent(SplashActivity.this, MainAct.class);
SplashActivity.this.startActivity(intent);
SplashActivity.this.finish();
}
private void goGuide() {
Intent intent = new Intent(SplashActivity.this, GuideActivity.class);
SplashActivity.this.startActivity(intent);
SplashActivity.this.finish();
}
उदाहरण 2
बच्चे सूत्र में उपयोग हैंडलर अनुरोध नेटवर्क अनुरोध काम में समय लगता है हो सकता है यदि।
new Thread(new Runnable(){
@Override
public void run() {
String versionPath = Parameters.getCheckVersionPath();
String result = RequestHelper.doGet(versionPath, null);
Message msg = new Message();
Bundle data = new Bundle();
data.putString("result",result);
msg.setData(data);
handler1.sendMessage(msg);
}
}).start();
handler1 = new Handler(){
@Override
public void handleMessage(Message msg) {
String result = msg.getData().getString("result");
JSONObject obj;
try {
obj = new JSONObject(result);
Map<String, String> versionInfo = Helper.getSoftwareVersion(obj);
if (versionInfo != null) {
newVersion = versionInfo.get("version");
updateUrl = versionInfo.get("url");
}
} catch (JSONException e) {
Log.w("net work error!", e);
}
}
};
उदाहरण 3
उपयोग हैंडलर और टाइमर प्रगति बार अद्यतन करने के लिए।
logobar = (ImageView) findViewById(R.id.splash_bar);//progress bar.
logobarClipe = (ClipDrawable) logobar.getBackground();
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
updateLogoBarHandler.sendEmptyMessage(0);
}}, 0, rate);
/**************************************************************************************
*2. Handler
*/
//update progress bar.
private Handler updateLogoBarHandler = new Handler() {
public void handleMessage(Message msg) {
if(logobarClipe.getLevel() < 10000){
//1.update image.
logobarClipe.setLevel(logobarClipe.getLevel() + rate*2);
//2.update text.
float percent = logobarClipe.getLevel() /100;
String percentTxtVerbose = String.valueOf(percent);
String percentTxt = percentTxtVerbose.substring(0, percentTxtVerbose.indexOf('.')) + "%";
bartxt.setText(percentTxt);
}else{
timer.cancel();
}
super.handleMessage(msg);
}
};