2011-06-22 50 views
212

Có cách nào đáng tin cậy để nhận số Context từ số Service không?Nhận bối cảnh trong Dịch vụ

Tôi muốn đăng ký bộ thu phát sóng cho ACTION_PHONE_STATE_CHANGED nhưng tôi không cần ứng dụng của mình để luôn nhận được thông tin này, vì vậy tôi không đặt nó trong số Manifest.

Tuy nhiên, tôi không thể có bộ thu phát sóng bị GC giết khi tôi cần thông tin này để tôi đăng ký bộ thu phát sóng trong một Service.

Do đó, tôi cần số Context để gọi registerReceiver(). Khi tôi không còn cần số ACTION_PHONE_STATE_CHANGED I hủy đăng ký.

Bất kỳ mẹo nào?

Trả lời

615

Service là một dịch vụ Context

+151

lol. Tôi là người mới. Cảm ơn nhiều!!! – user123321

+1

Tôi gặp vấn đề này, nhưng hóa ra đó là chuỗi công nhân không có ngữ cảnh. Tôi giải quyết nó của tôi đi qua một bối cảnh khi xây dựng các chủ đề. –

+10

Lưu ý: Ngữ cảnh trong dịch vụ sẽ không hiển thị cho đến khi onStart hoặc onStartCommand trong các dịch vụ: http://stackoverflow.com/questions/7619917/how-to-get-context-in-android-service-class – class

45

kéo dài ContextWrapper mà mở rộng Context. Do đó Dịch vụ là một bối cảnh. Sử dụng từ khóa 'này' trong dịch vụ.

6

Kể từ Service là một Context, bối cảnh biến phải this:

DataBaseManager dbm = Utils.getDataManager(this); 
19
  1. Dịch vụ mở rộng ContextWrapper
  2. ContextWrapper mở rộng Context

Vì vậy ....

Context context = this; 

(trong dịch vụ hoặc Hoạt động Class)

0

YourServiceClass.this

GPSTracker gpsTracker = new GPSTracker(TimeService.this); 
Các vấn đề liên quan