주기적으로 서버에 접속하기 하는 어플을 만들려고 하는데요
책을 보면서 주먹 구구 식으로 만들었더니
에러는 없는데 핸들러가 작동을 안합니다.
에러 메세지는 없는데
The MeThod handlerMessage(Message) frome the type new Handler()[] is
never usesd locally.
라는 느낌표만 뜹니다.
쓰레드 클래스의 선언 위치 때문에 그런거 같은데
쓰레드 클래스를 아예 밖에서 써주면 mThread = new BackThread(mHandler); 에서
에러가 납니다.
도통 어디서 무엇을 잘못 됐는지 감을 못잡겠네요
로그 값으로 확인해 보았더니 나머지는 다 잘 실행 되는데
handler만 동작을 안합니다.
package com.mystory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
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.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class JHThreadTest extends Activity {
/** Called when the activity is first created. */
int test;
EditText mResult;
ImageView image;
TextView number;
BackThread mThread;
String Result;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
image = (ImageView)findViewById(R.id.image01);
number = (TextView)findViewById(R.id.number);
mThread = new BackThread(mHandler);
mThread.setDaemon(true);
mThread.start();
}
Handler mHandler = new Handler(){
public void handlerMessage( Message msg){
Log.i("handler : " ,Result );
if(msg.what ==0){
if(Result.equals("park"))
{
image.setImageResource(R.drawable.park_car);
Log.i("Result if : " , Result);
}else if(Result.equals("empty"))
{
image.setImageResource(R.drawable.park_empty);
Log.i("Result else if : " , Result);
}
}
}
};
class BackThread extends Thread{
int mBackValue = 0;
Handler mHandler;
BackThread(Handler handler){
mHandler = handler;
}
public void run(){
String Json = DownloadHtml("http://elec04.iptime.org/test02.json");
Log.i("Thread Json : " , Json);
while(true){
try{
Message msg = Message.obtain(mHandler, 0, mBackValue,0);
mHandler.sendMessage(msg);
JSONArray ja = new JSONArray(Json);
JSONObject order = ja.getJSONObject(1);
Result = order.getString("A01");
Log.i("Thread result : " , Result);
// if(Result.equals("park"))
// {
// image.setImageResource(R.drawable.park_car);
// Log.i("Result if : " , Result);
// }else if(Result.equals("empty"))
// {
// image.setImageResource(R.drawable.park_empty);
// Log.i("Result else if : " , Result);
// }
} catch(JSONException e) {
Log.i("JsoneException : " , Result);
}
try{Thread.sleep(1000);}catch(InterruptedException e){;}
}
}
String DownloadHtml(String addr){
StringBuilder jsonHtml = new StringBuilder();
try{
// 연결 url 설정
URL url = new URL("addr);
// 커넥션 객체 생성
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// 연결되었으면.
if(conn !=null){
conn.setConnectTimeout(1000*60);
conn.setUseCaches(false);
// 연결되었음 코드가 리턴되면.
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "EUC-KR"));
for(;;){
// 웹상에 보여지는 텍스트를 라인단위로 읽어 저장.
String line = br.readLine();
if(line == null) break;
// 저장된 텍스트 라인을 jsonHtml에 붙여넣음
jsonHtml.append(line + "\n");
}
br.close();
}
conn.disconnect();
}
} catch(Exception ex){
;
}
return jsonHtml.toString();
}
}
}