0
私はアンドロイドが新しくアンドロイドサービスを理解しようとしています。私はLine Graph
のTemperature
の読みを更新するチュートリアルに取り組んでいます。任意のメッセージを確認するアンドロイドサービスでハンドラーを使用しているときの問題
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
UiHandlerCallback2
:
次はサービス
public class Temperature extends Service {
private static final String TAG = "HelloService";
private static final int PROCESS_SENSOR_DATA_ON_UI = 801;
private boolean isRunning = false;
public static ArrayList<Float> tempValueC=new ArrayList<Float>();
private Handler mUiHandler2;
@Override
public void onCreate() {
Log.i(TAG, "Service onCreate");
isRunning = true;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "Service onStartCommand");
new Thread(new Runnable() {
@Override
public void run() {
mUiHandler2 = new Handler(new UiHandlerCallback2());}
class UiHandlerCallback2 implements Handler.Callback {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case COMPLETE_INIT:
break;
case PROCESS_EVENT_DEVICE_UNSUPPORTED:
Toast.makeText(getApplicationContext(), R.string.error_unsupported_device,
Toast.LENGTH_SHORT).show();
break;
case PROCESS_CONNECTION_STATE_CHANGE_UI:
//updateConnectionStateWidgets();
break;
case PROCESS_BATTERY_STATUS_UI:
// updateBatteryLevelWidget(msg.arg1);
break;
case PROCESS_SENSOR_DATA_ON_UI:
processSensorData((byte[]) msg.obj);
break;
}
return true;
}
private void processSensorData(byte[] sensorData) {
//code for temperature update
}
}
}
@Override
public IBinder onBind(Intent arg0) {
Log.i(TAG, "Service onBind");
return null;
}
ための私のコードで私は次のようにエラーが発生します。
私は私が間違っているつもりですどこかを知りたいハンドラmUiHandler2 = new Handler(new UiHandlerCallback2());
の作成時にエラーが発生します。私はまだ基礎から始まっているので、あらゆる種類の助けに感謝します。
ありがとうございます。しかし、私は実装のためにアンドロイドサービスを使用したいと思います。何か案は? – ADI