2016-03-25 6 views
0

Ich versuche, eine Serviceklasse mit einer inneren Klasse zu erstellen, die eine Handler-Klasse ist, leider kann ich nicht auf handler.obtainMessage() in dieser Klasse zugreifen. Kann jemand dazu Vorschläge machen?myHandler.obtainMessage() ist nicht erlaubt in Service-Klasse in android

Quellcode für die Service-Klasse:

public class MyService extends Service { 

    private MyHandler myHandler; 

    private final class MyHandler extends Handler { 
     public MyHandler(Looper looper) { 
      super(looper); 
     } 


     public void handleMessage(Message msg) { 
      try { 
       Thread.sleep(5000); 
       // use the unique startId so you don't stop the 
       // service while processing other requests 
       stopSelfResult(msg.arg1); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void close() { 

     } 

     @Override 
     public void flush() { 

     } 

     @Override 
     public void publish(LogRecord record) { 

     } 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "Service Created", Toast.LENGTH_SHORT).show(); 
     // Create a new HandlerThread with a specified priority 
     HandlerThread thread = new HandlerThread("MyHandlerThread",Thread.NORM_PRIORITY); 
     // Start the handler thread so that our Handler queue will start 
     // processing messages 
     thread.start(); 
     // Run the handler using the new HandlerThread 
     myHandler = new MyHandler(thread.getLooper()); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Message msg = myHandler.obtainMessage(); 
     msg.arg1 = startId; 
     myHandler.sendMessage(msg); 
     return START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     return null; 
    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "Service Done", Toast.LENGTH_SHORT).show(); 
    } 

} 
+1

Warum denkst du, kannst du nicht? Es gibt kein Problem damit. Wenn Sie einen Fehler erhalten, posten Sie das. –

Antwort

1

Sie haben die falsche Handler Klasse importiert. Es sollte android.os.Handler sein, nicht java.util.logging.Handler.

Verwandte Themen