1

我尝试在我的应用程序中添加一个 Splash Activity,当程序第一次启动时,这个 Splash Activity 会打开

但是当应用程序工作并将启动活动跳过到主要活动并且用户按住并转到主屏幕时

之后,用户将返回应用程序,,

问题就在这里,所以应用程序再次重新打开启动活动

我不希望每次应用程序恢复活动时应用程序都打开启动活动,我需要直接打开主要活动......

我尝试了这段代码,但它不适用于我

在飞溅活动中...

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Class<?> activityClass;

        try
        {
            SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
            activityClass = Class.forName(prefs.getString("lastActivity", MainActivity.class.getName()));
        }
        catch(ClassNotFoundException ex)
        {
            activityClass = MainActivity.class;
        }

        startActivity(new Intent(this, activityClass));

        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener()
        {           
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        }
        );
    }


}

在主要活动中我使用此代码

public class Main2Activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

    }


    @Override
    protected void onPause() {
        super.onPause();

        SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
        Editor editor = prefs.edit();
        editor.putString("lastActivity", getClass().getName());
        editor.commit();
    }

}

我希望能帮助我

提前致谢

问候 ... :)

4

1 回答 1

2

使用 Application 类保存全局标志:

public class App extends Application {
    private static boolean sFirstRun = false;

    public static boolean fetchFirstRun() {
        boolean old = sFirstRun;
        sFirstRun = false;
        return old;
    }

    //--called when app process is created--
    @Override
    public void onCreate() {
        super.onCreate();

        sFirstRun = true;
    }
}

在 manifest.xml 添加:<application android:name=".App"

现在,App.fetchFirstRun()仅当从头开始创建 App 进程时才适用。只要应用程序正在运行,后续调用就会返回 false。

于 2013-01-04T14:14:33.703 回答