1
public class bootCompleteReceiver extends BroadcastReceiver{
private External external;

public bootCompleteReceiver(External _external){
    external = _external;
}

@Override
public void onReceive(Context context, Intent intent) {
    external.doStuff();
}
}

このコードでは、ブート完了は登録されませんが、コンストラクターを削除すると、正常に機能します。(注:言うまでもなく、受信者はマニフェストに正しく登録されています)。

静的レシーバーがコンストラクターを持つことができないという私の恐れを誰かが確認したり、このコードが試みていることを実行する方法を説明したりできますか?

4

1 に答える 1

1

コンストラクターにはパラメーターがあるため、起動時にそのコードを呼び出すことはできません。そのパラメータを設定する方法がないため、システムから呼び出すことはできません。システムに関する限り、「外部」クラスは不明なエンティティです。

パラメータのないコンストラクタを追加するか、現在のコンストラクタを削除して、システムがそれにアクセスできるようにします。

于 2012-04-04T14:40:52.690 に答える