我有一个具有以下构造函数的服务:
public ShimmerService(Context context, Handler handler) {
mHandler = handler;
}
我想实例化这个服务类。以下是我的代码,但我不确定在哪里传递参数:
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;
}
};
除了绑定、启动等其他设置都已完成。但是我在上面的代码中遇到了错误:
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
我该如何解决这个问题?我需要传递参数到哪里?以下的代码可以工作,但它将服务类(service class)视为类而不是服务(service):
mShimmerService = new ShimmerService(this, mHandler);
bindService
和startService
是否有区别,但根据文档和这个讨论,当Intent在onBind
中接收时,额外的参数可能不存在。 - DuneCat