2012-04-04 11 views
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(); 
} 
} 

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

静的受信者がコンストラクタを持つことができないこと、またはこのコードが何をしようとしているかを説明することができますか?

答えて

1

コンストラクタにパラメータがあるため、ブート時にそのコードを呼び出すことはできません。そのパラメータをシステムに呼び出さないようにするための方法はありません。あなたの「外部」クラスは、システムに関する限り、未知の存在です。

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

+0

多くのありがとう2000+ –

関連する問題