通过intent或static变量传递值?

时间:2014-01-16 06:47:13

标签: android

我想知道设计/编程的最佳方法:

如果我有一个布尔值(假设用户是否有额外的功率)我需要将它从活动A传递到B到C.我应该将它添加到每个活动的意图到另一个或者我应该只需将其存储在静态变量中并每次访问它?

3 个答案:

答案 0 :(得分:3)

在意图中传递它更安全。有时,当需要内存时,android会在没有警告的情况下杀死应用程序,而另一方面不会保留静态值,保留额外的意图。如果你想进一步推动它,请使用共享首选项。它使用Map数据结构设计,因此速度不会成为问题。

答案 1 :(得分:1)

Android Intents有一个putExtra方法,可用于将变量从一个活动传递到另一个活动。

public class ActivityA extends Activity {

    ...

    private void startActivityB() {
        Intent intent = new Intent(this, ActivityB.class);
        intent.putExtra("HAS EXTRA POWER", false);
        startActivity(intent);
    }
}

public class ActivityB exntends Activity {

    Bundle bundle;

    private void hasExtraPower() {
        bundle = getIntent().getExtras();

        if(!bundle.getBoolean("HAS EXTRA POWER")
            // do something
        else
            // do something else
    }
}

答案 2 :(得分:0)

通过Intent传递数据  如果您仅在那个活动中使用它,那很好,但是  当您需要传递到像viewmodel这样的其他层时,这会使您的操作速度变慢