【问题标题】:How to clear values of all static variables at the end of an activity Android?如何在活动 Android 结束时清除所有静态变量的值?
【发布时间】:2013-06-10 04:49:27
【问题描述】:

我创建了一个应用程序,它接收用户名和其他交易详细信息,然后将它们填充到数据库中。有时,应用程序通过将数据库中的相同详细信息作为两个事务填充两次而表现出奇怪的行为。即使读取了新值但未将其存储在静态变量中。

因此,我需要帮助在每个活动结束时刷新所有静态变量的值,以避免在新事务中覆盖以前的值。

编辑:

  public class One
      {
  static String var;

      public void onCreate(Bundle savedInstanceState)
    {    
      super.onCreate(savedInstanceState);
              var="blah";
         }
   }

          public class Two
            {
              static String variable = One.var;
               // This is where i am accessing the value of the variables from previous activities.

              //CODE
            }

【问题讨论】:

  • 请提供相关代码。
  • 如果你想刷新变量,为什么要让它成为静态的。您可以创建数据库的签入插入逻辑。
  • 我认为静态变量会在销毁活动时被刷新。但正如你所说的那样,它没有发生......对吧??
  • @GarimaTiwari 在这种情况下你为什么要使用静态变量使用共享首选项或使用意图将值传递给其他活动
  • @GarimaTiwari 静态变量存储在堆中的永久区域中。所以使用静态变量不是一个好主意。检查主题下的链接@developer.android.com/training/articles/perf-tips.html Prefer Static Over Virtual

标签: android static-members


【解决方案1】:

希望这些对你有帮助..

在任何活动中使用静态变量就像一场噩梦,因为它在整个活动中存储内存..

我认为您可以尝试一些其他内存存储来解决将值从一个活动传递到另一个活动的问题..

在我看来,您可以将值存储在 SharedPreference 中,或者您可以通过意图将值传递给其他需要的活动..

希望这些对你有所帮助..

编辑:

Intent in = new Intent(MainActivity.this,SecondActivity.class);

您可以使用多个putExtra() 方法来放置多个值,然后可以在第二个活动中获取

in.putStringArrayListExtra(String name, ArrayList<String> value);

StartActivity(in);

在第二个活动中:

Intent in = getIntent();

ArrayList<String> Roleids = new ArrayList<String>;

RoleId = in.getStringArrayListExtra(String name, ArrayList<String> value)

【讨论】:

  • 如果您在答案中发布了链接,我看不到它们!你能编辑吗?谢谢 ! :]
  • @Garima:你在编程中使用过 SharedPreference 或 Intent 吗??如果没有,那么我可以为您提供代码..
  • 大声笑。不,谢谢。我认为我在这方面做得很好。你能发布一些关于如何将多个字符串和整数值从一个活动传递到另一个活动的代码吗?
  • MULTIPLE 值(字符串和整数)。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多