2016-04-09 18 views
0

私はアンドロイドが新しくアンドロイドサービスを理解しようとしています。私はLine GraphTemperatureの読みを更新するチュートリアルに取り組んでいます。任意のメッセージを確認するアンドロイドサービスでハンドラーを使用しているときの問題

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());

の作成時にエラーが発生します。私はまだ基​​礎から始まっているので、あらゆる種類の助けに感謝します。

答えて

0

オットーをチェックしてください。これは、アプリケーションコンポーネント間でデータを簡単に送信するためのlibです。

http://square.github.io/otto/

+0

ありがとうございます。しかし、私は実装のためにアンドロイドサービスを使用したいと思います。何か案は? – ADI

関連する問題