2010-02-15 10 views
18

Tôi đã tạo một lớp mới có tên là HelloService. Tôi đã thêm mục này vào tệp manifest.xml của Android.Tại sao Dịch vụ của tôi không hoạt động trong Android? (Tôi chỉ muốn đăng nhập một cái gì đó bao giờ 5 giây)

public class HelloService extends Service { 
    private Timer timer = new Timer(); 
    private long INTERVAL = 5000; 

    public void onCreate() { 
     super.onCreate(); 
     startservice(); 

    } 

    private void startservice() { 
     timer.scheduleAtFixedRate(new TimerTask() { 
      public void run() { 
       Log.d("servy", "This proves that my service works."); 
      } 
     }, 0, INTERVAL); 
    ; } 

    private void stopservice() { 
     if (timer != null){ 
      timer.cancel(); 
     } 
    } 

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

hoạt động khác của tôi gọi nó là như thế này:

Intent helloservice = new Intent(this, HelloService.class); 
    startService(helloservice); 

Đối với một số lý do, tôi đặt một breakpoint trong HelloService mới của tôi ... nhưng nó thậm chí không chạm. Nó cũng không đăng nhập.

Edit: "Không thể bắt đầu dịch vụ Ý định {CMP = com.examples.hello/.HelloService}: không tìm thấy"

Điều đó có nghĩa gì? ... Tôi đã tạo HelloService.java ở cùng một nơi với mọi thứ khác ...


Giải quyết. Tôi đã sửa tệp kê khai của mình. Cảm ơn Nikola Smiljanic

<service android:name=".HelloService"/> 

tới:

<service android:name="HelloService"></service> 
+0

Bạn đã thêm gì vào tệp kê khai của mình? –

+20

Nếu bạn đã giải quyết được vấn đề của mình, hãy đăng câu trả lời và chấp nhận nó. Điều này sẽ loại bỏ nó khỏi các tín hiệu chưa được trả lời đang phát triển theo ngày. – Merlin

+0

chính xác những gì tôi đã gặp phải, thật lạ khi trong tài liệu chính thức: http: //developer.android.com/guide/topics/fundamentals/services.html#Declaring, họ sử dụng , với dấu chấm là tiền tố – DiveInto

Trả lời

1

Bạn sẽ thử điều này:

helloservice.setComponent(new ComponentName 
       (*hello service package name goes here*, 
           *hello service canonical name goes here*)); 
startService(helloservice); 
0

Khai báo các dịch vụ của bạn trong tập tin mainfest.xml của dự án của bạn.

<services android:name=".SMSReceiver" android:enabled="true"> 
      <intent-filter> 
        <action android:name=/> 
     </intent-filter> 
</services> 
3

Một dịch vụ có một chu kỳ cuộc sống như bất kỳ ứng dụng android khác. Vì lý do này nó có thể xảy ra rằng dịch vụ của bạn bị hệ thống giết chết (xem tài liệu Service). Cách đúng để thực hiện điều này là sử dụng Alarm Manager như được thảo luận trong Android service stops.