Tôi có một dịch vụ với một constructor sau:Làm thế nào để khởi tạo dịch vụ Android với một nhà xây dựng?
public ShimmerService(Context context, Handler handler) {
mHandler = handler;
}
Tôi muốn nhanh chóng lớp dịch vụ này. Tôi đã sau mã nhưng, tôi không chắc chắn nơi để vượt qua paramater:
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
mShimmerService = ((ShimmerService.ShimmerConfigureBinder) binder)
.getService();
Toast.makeText(ConfigureShimmer.this,
"Shimmer service has succesfully started.",
Toast.LENGTH_SHORT).show();
}
public void onServiceDisconnected(ComponentName className) {
mShimmerService = null;
}
};
Tôi có mọi thứ khác thiết lập bao gồm ràng buộc, trên đầu và vân vân. Nhưng tôi gặp lỗi ở mã trên:
04-03 19:06:10.285: E/AndroidRuntime(16837): java.lang.RuntimeException: Unable to instantiate service com.milanix.androidecg.services.ShimmerService: java.lang.InstantiationException: can't instantiate class com.milanix.androidecg.services.ShimmerService; no empty constructor
Làm cách nào để khắc phục sự cố này? Tôi sẽ cần phải vượt qua thông số ở đâu? Sau công trình mã nhưng, nó thay vì sử dụng lớp dịch vụ như là một lớp, chứ không phải là dịch vụ:
mShimmerService = new ShimmerService(this, mHandler);
nhưng, tôi sẽ chuyển trình xử lý bằng cách sử dụng và ý định như thế nào? bất kỳ ví dụ nào? – Milan
Bạn cần trình xử lý đó để làm gì? Bạn có chắc chắn việc xây dựng trình xử lý từ đầu trong dịch vụ sẽ không giúp ích gì không? Dịch vụ không phải là chủ đề; dịch vụ thực hiện trên cùng một chuỗi giao diện người dùng như mã người tiêu dùng. –
Tôi không biết liệu có sự khác biệt giữa 'bindService' và' startService' trong vấn đề này hay không, nhưng theo tài liệu và [thảo luận này] (https://groups.google.com/d/topic/android-developers/onqqpHz2WQw/discussion) extras _might_ không có ở đó khi Intent được nhận trong 'onBind'. – DuneCat