我尝试将 Splash Activity 添加到我的应用程序 此启动 Activity 在程序首次启动时打开
但是当应用程序运行并跳过启动 Activity 到主要 Activity 时 用户按住并转到主屏幕
之后用户将返回应用程序,,
问题就在这里 所以应用程序再次重新打开启动 Activity
我不希望应用程序每次恢复 Activity 时都打开启动 Activity 我需要直接打开主要 Activity ...
我试过这段代码,但它对我不起作用
在飞溅 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);
}
}
);
}
}
在主 Activity 中我使用了这段代码
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();
}
}
最佳答案
使用 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。
关于android - 如何在暂停应用程序后打开上次打开的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158624/