1
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
        Intent newIntent = new Intent(context, SpeedDialerActivity.class);
        intent = new Intent(context, SpeedDialerActivity.class);
        context.startActivity(newIntent||intent(received from argument)); // which object is better here.
    }
}

Is it better to use the intent received in the argument of the onReceive method or is it better to create and use a new object of type Intent class. If I use the Intent object received as argument in onReceive method would the behavior be ambiguous.

4

1 に答える 1

1

Java (および任意の言語) での優れたプログラミングの基本的なルールは、変数を別の目的で再利用しないことです。問題を回避する最も安全な方法は、入力引数を として宣言することfinalです。そうすれば、そのような値の変更を行うことさえできなくなります。次のようにします。

public void onReceive(final Context context, final Intent intent) {

いずれにせよ、2 番目の変数を使用しても、大きなメモリ変更は発生しませんが、コードはより安全になります。入力オブジェクトをそのまま再利用すればメモリをいくらか節約できますintentが、それもしないでください! この種のメモリの最適化については、それが問題であることがわかった場合にのみ検討してください。その場合でも、通常、問題を解決する他の方法があります。

何が最もメモリを集中的に使用するかは、アプリケーションによって大きく異なりますが、実際には、画像がメモリの大部分を占めるなどのリソースがあります。そのためには、すでに利用可能なキャッシュメカニズムを使用する必要があります。Google 検索を行うだけで、無数の記事と Google IO ビデオが利用可能です。いくつかの例:

于 2013-08-21T11:33:54.527 に答える