java - 如何使用构造函数实例化android服务?

标签 java android service constructor

我有一个带有以下构造函数的服务:

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;
    }
};

我有其他所有设置,包括绑定(bind)、启动等。但是我在上面的代码中遇到错误:

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

如何解决这个问题?我需要在哪里传递参数?以下代码有效,但它使用服务类作为类,而不是服务:

mShimmerService = new ShimmerService(this, mHandler);

最佳答案

您不应显式构建服务(或 Activity 或广播接收器)。 Android 系统在内部执行此操作。构建服务的正确方法是通过 startService() 的 Intent ;随意为该 Intent 添加额外的参数。

编辑:或 bindService()。然后您可以选择 - 使用 AIDL 构建自定义界面,或使用原始 transact()

关于java - 如何使用构造函数实例化android服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999038/

相关文章:

android - 我如何获得 webView(android) 的当前比例

java - 媒体播放器绑定(bind)服务在暂停线程时锁定 UI

android - 如何不打开已通过最近的应用程序完成的 Activity

java 将一种可选类型转换为另一种可选类型

android - 通过命令行(Makefile)手动创建android apk

java - Mybatis生成器xml配置。设置表之间的连接

javascript - 如何使用jsoup选择当前div内的img标签

javascript - 使用 Angular 服务后 undefined object

java - mysql唯一索引在java中用作异常处理方法

java - 使用 Java 8 函数而不是多个 if else