【问题标题】:Run code on first OnCreate only仅在第一个 OnCreate 上运行代码
【发布时间】:2016-03-25 06:23:02
【问题描述】:

我有一段代码,我只想在第一次调用特定的 OnCreate() 方法时运行(每个应用会话),而不是每次创建活动时运行。有没有办法在 Android 中做到这一点?

【问题讨论】:

    标签: android android-studio android-lifecycle oncreate


    【解决方案1】:

    protected void onCreate(Bundle savedInstanceState) 拥有你所需要的一切。

    如果savedInstanceState == null 则为第一次。

    因此您不需要引入额外的 -static- 变量。

    【讨论】:

    • 试过了,由于某种原因,savedInstanceState 总是为空,所以希望一次性代码总是触发
    【解决方案2】:

    在您的活动中使用静态变量,如下所示

    private static boolean  DpisrunOnce=false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_run_once);
        if (DpisrunOnce){
            Toast.makeText(getApplicationContext(), "already runned", Toast.LENGTH_LONG).show();
    //is already run not run again
        }else{
    //not run do yor work here
            Toast.makeText(getApplicationContext(), "not runned", Toast.LENGTH_LONG).show();
            DpisrunOnce =true;
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用static 变量。

      static boolean checkFirstTime;
      

      【讨论】:

        【解决方案4】:

        使用 sharedpreference...第一次将值设置为 true...在每次运行时检查值是否设置为 true...并根据代码执行代码

        例如

        SharedPreferences preferences = getSharedPreferences("MyPrefrence", MODE_PRIVATE);
                        if (!preferences.getBoolean("isFirstTime", false)) {
          //your code goes here
         final SharedPreferences pref = getSharedPreferences("MyPrefrence", MODE_PRIVATE);
                            SharedPreferences.Editor editor = pref.edit();
                            editor.putBoolean("isFirstTime", true);
                            editor.commit();
        }
        

        【讨论】:

        • 但是你必须在某个时候将它设置回 false 否则每次应用重启时它也会为 true
        • 您可以简单地将静态变量初始化为 false,检查其值,如果为 false,请执行您的工作并将标志设置为 true。当用户按下主屏幕上的返回按钮时,您可以再次将其设置为 false。
        • 共享偏好是实现此目的的方法。检查此库以使其更简单,只需一两行代码即可:github.com/viralypatel/Android-SharedPreferences-Helper
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 2019-02-01
        • 2020-01-07
        相关资源
        最近更新 更多