Example of using HandlerThread - Hallo sahabat Teknologi Terbaru, Pada Artikel yang anda baca kali ini dengan judul Example of using HandlerThread, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.
Judul : Example of using HandlerThread
link : Example of using HandlerThread
Example of using HandlerThread
android.os.HandlerThread is a handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.This is a example to implement our custom HandlerThread class, CustomHandlerThread. Start it in onResume() and stop it in onPause().
![]() |
Example of using HandlerThread |
package com.example.androidtesthandlerthread;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity implements Handler.Callback{
public class CustomHandlerThread extends HandlerThread implements Handler.Callback{
public static final int MSG_FINISHED = 100;
public static final int MSG_COUNT_UP = 101;
public static final int MSG_COUNT_DOWN = 102;
private Handler handler, callback;
public CustomHandlerThread(String name) {
super(name);
// TODO Auto-generated constructor stub
}
public CustomHandlerThread(String name, int priority) {
super(name, priority);
// TODO Auto-generated constructor stub
}
public void setCallback(Handler cb){
callback = cb;
}
@Override
protected void onLooperPrepared() {
handler = new Handler(getLooper(), this);
}
@Override
public boolean handleMessage(Message msg) {
int data1 = msg.arg1;
int data2 = msg.arg2;
int counter;
switch(msg.what){
case MSG_COUNT_UP:
for(counter=data1; counter < data2; counter++){
//...
}
callback.sendMessage(Message.obtain(null, MSG_FINISHED, counter));
break;
case MSG_COUNT_DOWN:
for(counter=data1; counter > data2; counter--){
//...
}
callback.sendMessage(Message.obtain(null, MSG_FINISHED, counter));
break;
}
return true;
}
public void querySomething(int start, int end){
if(start > end){
Message msg = Message.obtain(
null, //Handler h
MSG_COUNT_DOWN, //int what
start, //int arg1
end); //int arg2
handler.sendMessage(msg);
}else if(start < end){
Message msg = Message.obtain(
null, //Handler h
MSG_COUNT_UP, //int what
start, //int arg1
end); //int arg2
handler.sendMessage(msg);
}
}
}
private final static String MyName = "My CustomHandlerThread";
private CustomHandlerThread myCustomHandlerThread;
private Handler myHandler;
Button btnUp, btnDown;
TextView textResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnUp = (Button)findViewById(R.id.buttonup);
btnDown = (Button)findViewById(R.id.buttondown);
textResult = (TextView)findViewById(R.id.result);
btnUp.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
myCustomHandlerThread.querySomething(1, 100);
}});
btnDown.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
myCustomHandlerThread.querySomething(500, 10);
}});
myHandler = new Handler(this);
}
@Override
protected void onResume() {
super.onResume();
myCustomHandlerThread = new CustomHandlerThread(MyName);
myCustomHandlerThread.setCallback(myHandler);
myCustomHandlerThread.start();
}
@Override
protected void onPause() {
super.onPause();
myCustomHandlerThread.setCallback(null);
myCustomHandlerThread.quit();
myCustomHandlerThread = null;
}
@Override
public boolean handleMessage(Message arg0) {
int result = (Integer)arg0.obj;
textResult.setText("result: " + result);
return false;
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android-coding.blogspot.com" />
<Button
android:id="@+id/buttonup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Count up from 1 to 100" />
<Button
android:id="@+id/buttondown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Count down from 500 to 10" />
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Demikianlah Artikel Example of using HandlerThread
Sekianlah artikel Example of using HandlerThread kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.
0 Response to "Example of using HandlerThread"
Post a Comment