Tôi có một tình huống cụ thể: một dịch vụ được bắt đầu bởi một bộ thu phát sóng bắt đầu một hoạt động. Tôi muốn làm cho nó có thể cho hoạt động này để giao tiếp trở lại dịch vụ. Tôi đã chọn sử dụng AIDL để làm cho nó có thể. Mọi thứ dường như hoạt động tốt ngoại trừ phương pháp bindService()
được gọi là trong onCreate()
hoạt động. bindService(), trên thực tế, ném một ngoại lệ con trỏ null vì onServiceConnected()
không bao giờ được gọi trong khi phương thức của dịch vụ là . Dù sao bindService()
trả về đúng sự thật. Dịch vụ rõ ràng là hoạt động vì nó bắt đầu hoạt động. Tôi biết rằng việc gọi một hoạt động từ một dịch vụ có thể nghe lạ, nhưng tiếc là đây là cách duy nhất để nhận dạng giọng nói trong một dịch vụ.onServiceConnected không bao giờ được gọi sau phương thức bindService
Cảm ơn trước
có lỗi, tôi hiểu vấn đề có thể được giải thích tốt hơn. NullPointerException được ném bởi vì giao diện từ xa không bao giờ được điền như remote = IRemoteService.Stub.asInterface (service); trong onServiceConnected() không bao giờ được gọi. BindService có nên kích hoạt onServiceConnected ngay lập tức không? – Matroska
'onServiceConnected()' không nên được gọi là __immediately__, có thể sẽ có một sự chậm trễ nhỏ. – MrSnowflake
Bạn đã đúng! Phương thức này không được gọi ngay lập tức. Đó là vấn đề của tôi. – Matroska