2016-10-15 142 views
0

我的Android应用程序以Facebook登录页面开始,如果用户已登录,则跳至主页面。登录页面显示第二个

问题是,如果用户登录喷射主页将显示一秒钟。

这里是我的启动代码:

public class MainActivity extends AppCompatActivity { 

private SectionsPagerAdapter mSectionsPagerAdapter; 

private ViewPager mViewPager; 
private AccessTokenTracker mAccessTokenTracker; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    AppEventsLogger.activateApp(this); 
    final Context context=this; 

    if (AccessToken.getCurrentAccessToken() != null) { 
     mAccessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { 
       mAccessTokenTracker.stopTracking(); 
       if(currentAccessToken == null) { 
        Log.i("LOGIN","ALL PERMISSION DELETED, SKIP TO THE LOGIN"); 
       } 
       else { 
        //CHECK PERMISSION ONE BY ONE 
        String current_permission =currentAccessToken.getPermissions().toString(); 
        if (current_permission.contains("user_photos") && current_permission.contains("user_post") && current_permission.contains("public_profile")) { 
         Toast.makeText(getApplicationContext(), "YOU ARE LOGGED IN", Toast.LENGTH_LONG).show(); 
         Intent intent = new Intent(context, HomeActivity.class); 
         context.startActivity(intent); //USER IS LOGGED IN AND HAVE ALL PERMISSION SO GO TO THE HOME PAGE 
        } 
       } 
      } 
     }; 
     AccessToken.refreshCurrentAccessTokenAsync(); 
    } 
    else { 
     Log.i("LOGIN","NEED TO LOG IN"); 
    } 
    setContentView(R.layout.activity_main); 
    ...... 
    //GO TO THE LOGIN PAGE 

如何避免这一点,什么是最好的做法?

回答

0

如果您的用户已经登录,请确保您在调用startActivity()之后不要调用setContentView()。这样,除非用户未登录,否则不会扩大版面布局。

您可以通过多种方式实现此目的,包括在调用startActivity()之后从方法返回。