2016-04-09 31 views
0

Android için yeni ve android hizmetleri anlamaya çalışıyorum. Bir Line Graph üzerinde Temperature okumaları güncelleştirmeyle ilgili bir eğitim üzerinde çalışıyorum.Android hizmet sağlayıcıları kullanırken sorunlar

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

UiHandlerCallback2 herhangi iletileri denetlemek için:

aşağıdaki Ben şöyle bir hata alıyorum hizmet

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

benim kodudur.

ben yanlış gidiyorum bilmek istiyorum işleyici mUiHandler2 = new Handler(new UiHandlerCallback2());

yaratılmasını hatası alıyorum. Hala temel konularla başlıyorum, böylece her türlü yardım takdir ediliyor.

cevap

0

Otto göz atın. Uygulama bileşenleri arasında kolayca veri göndermek için bir lib. Bilgi

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

+0

teşekkürler. Ancak, uygulama için android servisini kullanmak istiyorum. Herhangi bir fikir? – ADI

İlgili konular