暂停应用程序后如何打开上次打开的活动

时间:2013-01-04 14:02:49

标签: android android-layout

我尝试将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();
    }

}

我希望帮助我

提前致谢

问候......:)

1 个答案:

答案 0 :(得分: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进程时才为真。只要app正在运行,后续调用将返回false。