2016-04-09 11 views
0

Ich bin neu bei Android und versuchen, Android-Dienste zu verstehen. Ich arbeite an einem Tutorial zur Aktualisierung Temperature Messwerte auf einem Line Graph.Probleme bei der Verwendung von Handlern in Android-Dienst

Im Folgenden ist der mein Code für Service

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; 
    } 

ich eine Fehlermeldung erhalten, die wie folgt lautet: für alle Nachrichten

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 

UiHandlerCallback2 zu überprüfen.

Ich erhalte den Fehler bei der Erstellung des Handlers mUiHandler2 = new Handler(new UiHandlerCallback2());

Ich will wissen, wo ich falsch gehen. Ich beginne immer noch mit den Grundlagen, also wird jede Art von Hilfe geschätzt.

Antwort

0

Auschecken Otto. Es ist eine Lib zum einfachen Senden von Daten zwischen App-Komponenten.

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

+0

Danke für die Informationen. Aber ich möchte Android-Dienst für die Implementierung verwenden. Irgendwelche Ideen? – ADI

Verwandte Themen