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

是使用在 onReceive 方法的参数中接收到的意图更好,还是创建和使用 Intent 类类型的新对象更好。如果我在 onReceive 方法中使用作为参数接收的 Intent 对象,则行为会模棱两可。

4

1 回答 1

1

Java(和任何语言)良好编程的基本规则是不要为不同的目的重用变量。防止问题的最安全方法是将输入参数声明为final. 这样一来,您甚至无法进行此类价值更改。像这样做:

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

无论如何,拥有第二个变量不会导致任何重大的内存更改(如果有的话),但您的代码会更安全。如果输入intent对象按原样重用,您可以节省一些内存,但也不要这样做!只有当您认为这是一个问题时,您才应该考虑这些内存优化。即使在这种情况下,通常还有其他方法可以解决问题。

这在很大程度上取决于您的应用程序什么是最占用内存的,但在实践中,资源(例如图像)占用了大部分内存。您应该为此使用已经可用的缓存机制。只需进行 google 搜索,即可获得数以万计的文章和 Google IO 视频。一些例子:

于 2013-08-21T11:33:54.527 回答