我 在 MainActivity  里面写了个检查用户是否需要升级的程序,当用户刚启动的时候会进行检测。该  Activity 里面有三个按钮  分别进入 三个不同的 Activity  如果用户在 那些Activity 里面点击了返回主界面的按钮  就会再次进入  MainActivity  主界面 然后程序 就会再次检测 一下是否需要升级,怎么做到 只有用户 第一次启动应用  进入MainActivity 的时候才检测,当进入别的 界面以后再点击发散会按钮进入  MainActivity 的时候就不在检测????

解决方案 »

  1.   

    你把检测升级的代码放到onCreate里面就可以了,onCreate只会在第一次启动Activity时调用,用户点击返回键的话,调用的是onStart。
    如果你在那些3个Activity里面设置的返回主界面的按钮,点击后是通过Intent方式启动主界面Activity的话,那么可以通过在Intent里面加一个参数,然后再在主界面的Activity里面去判断Intent是否存在这个参数,如果不存在就检测升级,否则不检测。
      

  2.   

    static boolean checked = false;
    void check(){
        if(checked == true) return;
        checked = true;    //check version code ....
    }
      

  3.   

    同意三楼 二楼 虽然可以解决这个问题 但是复杂任务控制中 标记变量的控制不太容易控制, 充分利用Activity的生命周期就可以了  
      

  4.   

    补充 如果是单纯的可以 直接将当前Activity 不需要传递信息或数据 连intent都可以不写 之间将当前Activity 进行finnish() 返回MainActivity时 不会回调 OnCreate的方法 也就不会进行第二次检测升级
      

  5.   


    正解,利用activity的生命周期
      

  6.   

    SharedPreferences中设置一个flag,第一次为true,执行版本升级,执行后设置为false,以后在进入该应用后因为是false,就不会在执行版本升级检测了
      

  7.   

    不好意思,刚学android  很多东西都不懂怎么怎么用,下面是我写的,我之前一直都用  finish()  可是没有管用,我返回 主界面的时候还是会 检测,麻烦 指导一下谢谢                          case R.id.returnsButtonID:
    Intent returnIntent = new Intent(MovieActivity.this,MainActivity.class);
    startActivity(returnIntent);
    listmap.clear();
    MovieActivity.this.finish();
    break;
      

  8.   

    最近封闭式开发 没有上网 不知道你问他解决了吗 试试case R.id.returnsButtonID:
                            MovieActivity.this.finish();
                            break;
    Intent returnIntent = new Intent(MovieActivity.this,MainActivity.class);
                            startActivity(returnIntent);
    会重新创建一个Activity 已经不是你之前的那个了 建议查阅 activity的 五种加载方式 和 activity的生命周期