2016-11-01 78 views
0

我完成了Android应用程序。使用firebase,admob。有31项活动。但是,当用户首次安装应用程序时,启动时间大约为18秒,这太高。第一次启动后,注册活动就在那里。但是如果我们重新启动应用程序,那么它会在2秒内启动。为什么有很高的发射时间?我怎样才能减少它?以下是我的注册活动代码。采用Android工作室2.2Android应用程序需要花费太多时间才能启动?

public class MainActivity extends AppCompatActivity { 
private AdView mAdView; 
private SignInButton mGoogleBtn; 
private static final int RC_SIGN_IN=1; 
private GoogleApiClient mGoogleApiClient; 
private FirebaseAuth mAuth; 
private static final String TAG="MAIN_ACTIVITY"; 
private FirebaseAuth.AuthStateListener mAuthListener; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mAuth=FirebaseAuth.getInstance(); 
    mAuthListener=new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      if(firebaseAuth.getCurrentUser()!=null){ 
       startActivity(new Intent(MainActivity.this,Home.class)); 

      } 
     } 
    }; 
    mGoogleBtn=(SignInButton)findViewById(R.id.view); 
    // Configure Google Sign In 
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(getString(R.string.default_web_client_id)) 
      .requestEmail() 
      .build(); 

    mGoogleApiClient=new GoogleApiClient.Builder(getApplicationContext()) 
      .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
        Toast.makeText(MainActivity.this,"Login via Google Failed! Press Skip",Toast.LENGTH_LONG).show(); 

       } 
      }) 
      .addApi(Auth.GOOGLE_SIGN_IN_API,gso) 
      .build(); 
    mGoogleBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signIn(); 
     } 
    }); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthListener); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     if (result.isSuccess()) { 
      // Google Sign In was successful, authenticate with Firebase 

      GoogleSignInAccount account = result.getSignInAccount(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      // Google Sign In failed, update UI appropriately 
      // ... 
     } 
    } 
} 


private void firebaseAuthWithGoogle(GoogleSignInAccount account) { 
    Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId()); 

    AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); 

        // If sign in fails, display a message to the user. If sign in succeeds 
        // the auth state listener will be notified and logic to handle the 
        // signed in user can be handled in the listener. 
        if (!task.isSuccessful()) { 
         Log.w(TAG, "signInWithCredential", task.getException()); 
         Toast.makeText(MainActivity.this, "Authentication failed. Press Skip.", 
           Toast.LENGTH_SHORT).show(); 
        } 
        else { 
         Toast.makeText(MainActivity.this,"Login Successful! Welcome to Unipune Buddy!",Toast.LENGTH_LONG).show(); 

        } 
        // ... 
       } 
      }); 
} 




private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 

public void mainscreen(View view){ 
    Intent intent0=new Intent(this,Home.class); 
    Toast.makeText(MainActivity.this,"Signed in Successfully!",Toast.LENGTH_LONG).show(); 
    startActivity(intent0); 
} 
} 

回答

2

我也有这个问题,我做了什么被禁止在项目设置即时运行,并重建项目,您还可以使用冷启动用于接合用户的第一次。

+0

谢谢你,很多马诺伊。这工作完美。现在,冷启动不到2秒。想给1000000 ..... Upvotes to this answer。嘿谷歌,请不要留下这样的错误。希望在下一个Android Studio中看到它消失。 – coolamz

+0

@coolamz请确认答案是否正确,这对其他开发者也是有用的:) –

相关问题