如果已经login,正确跳过login活动

我的启动器图标当前开始login活动。 我已经将login状态存储在SharedPreferences中。 有什么办法可以正确跳过login活动,直接进入主要活动,没有任何 UI故障。 所有涉及onCreate()finish()解决scheme都会导致login活动标题短暂可见或其他简短的空白屏幕UI故障。

有没有用户界面决定打开MainActivity或LoginActivity的启动器活动。 你可以声明没有用户界面:

 android:theme="@android:style/Theme.NoDisplay" 

另外两个可能的解决方

只要做相反的事情:使你的mainActivity你的启动,并检查用户是否login。然后redirect到loginActivity时,情况并非如此。

另一种方法是处理碎片。 有一个可以加载mainFragment和loginFragment的基本活动。 供参考: https : //developer.android.com/training/basics/fragments/index.html

您可以创build一个基本活动,检查用户的用户名和密码是否已经存在于SharedPreferences ,如果存在,则启动活动。

例:

 public class BeanStalkBaseActivity extends SherlockActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(SavedPreference.getUserName(this).length() == 0) { Intent intent = new Intent(this,LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); startActivity(intent); }else { Intent intent = new Intent(this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); startActivity(intent); } } 

}

BeanStalkBaseActivity应该是你的启动器,因为它只能作为一个检查器。

如果您有启动屏幕活动,您也可以检查login状态。 启动屏幕非常适合让用户知道应用程序在加载时没有停顿,也可以用来将应用程序redirect到相应的屏幕。

我第一次跟着这个伟大的指南做了一个: https : //www.bignerdranch.com/blog/splash-screens-the-right-way/