首页 > 解决方案 > 应用程序打开一次并保存在内存中时不显示启动画面

问题描述

我想在用户启动我的应用程序时出现启动画面(像往常一样),但是因为我将使用动画启动画面,所以我不想每次打开应用程序时都用相同的动画打扰用户,所以他需要等待 3 秒的动画完成。

所以..

如果用户已经打开了应用程序,我如何让应用程序不显示启动画面,并且应用程序应该检查打开时他是否处于缓存状态,然后再次调用,所以当他从缓存内存中调用时它不应该显示启动画面。

因为这样,这意味着他不会被用户破坏,因此用户可以快速从一个应用程序转到另一个应用程序。


就像在谷歌日历中一样,每次打开它都会让我看到启动画面,但我想做的一切都是检查一些笔记并返回日历以从笔记中制作一些事件。日历每次都花时间看他的启动画面。但是当我有一段时间没有使用它时,它仍然是很好的启动画面。


或者我应该在 MainActivity 中使用 onPause() 和 onDestroy() 方法来实现这一点。如果是这样,我怎么能做到这一点,当我实例化一个时如何不显示启动画面?

标签: androidsplash-screen

解决方案


创建一个 Preference Manager 类来存储一个布尔值来存储启动屏幕检查是否启动。

public class PrefManager { 
 private static final String KEY_IS_SPLASH_IN = "isSplashScreenIn";

  SharedPreferences pref;
    // Editor for Shared preferences
    Editor editor;
    // Context
    Context _context;
    // Shared pref mode
    int PRIVATE_MODE = 0;

    public PrefManager(Context context) {
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

 public boolean isSplashIn() {
        return pref.getBoolean(KEY_IS_SPLASH_IN, false);
    }

    public void setSplashIn(boolean setLogin) {
        editor.putBoolean(KEY_IS_SPLASH_IN, setLogin);
        editor.commit();
    }
}

在初始屏幕中使用首选项管理器类

public class SplashActivity extends Activity{

    PrefManager pref;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        pref = new PrefManager(this);
                    if (pref.isSplashIn == false) {
                         //Splash Screen Load
                         pref.setSplashIn(true);
                    } else {
                         Intent registration = new Intent(ctx, Login.class);
                         startActivity(registration);
                    }
           }
    }

谢谢,快乐编码......


推荐阅读