Mam aplikację, która łączy moje działania z szufladą nawigacyjną. Problem polega na tym, że niektóre czynności ładują się trudniej niż inne (gdy nacisnę ikonę na szufladzie, zamiast natychmiast otworzyć czynność, pozostaje przez 1-2 sekundy, a następnie ładuje się aktywność). To może być głupie pytanie, ale czy jest to możliwe, gdybyś dał mi radę, jak to naprawić? Oto jedna z czynności, które są trudniejsze do załadowania

public class ImportAPI extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
public TextView fullnameside, emailside;

public static String stravaToken;

public ImageButton btnStrava;
public ImageView tickStrava;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.importapi);


    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    toolbar.setTitle("");
    toolbar.setSubtitle("");

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    View headerView = navigationView.getHeaderView(0);
    fullnameside = (TextView) headerView.findViewById(R.id.fullnameside);
    emailside = (TextView) headerView.findViewById(R.id.emailside);
    fullnameside.setText(""+GetInfo.fullname);
    emailside.setText(""+GetInfo.email);

    navigationView.setNavigationItemSelectedListener(this);
    navigationView.getMenu().getItem(3).setChecked(true);


    //STRAVA
    tickStrava=(ImageView) findViewById(R.id.tickStrava);
    btnStrava=(ImageButton) findViewById(R.id.stravaBtn);
    connectStrava();

}

public void connectStrava(){

    btnStrava.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent getStravaApi= new Intent(ImportAPI.this,StravaSetupApi.class);
            startActivity(getStravaApi);

        }

    });

    //GET ACCESS TOKEN FROM STRAVAS AUTHORIZE ACCOUNT
    String accessToken = StravaAuthenticateActivity.getStravaAccessToken(this);
    stravaToken=accessToken; //make static var so i can use it anywhere i want

    //Get athletes activities from GetStravaAthleteActivities.java
    new GetStravaAthleteActivities.AthleteActivities();

    //check if token is null so i can display the tick and also disable the button press
    if(stravaToken!=null)
    {
        btnStrava.setEnabled(false);
        tickStrava.setVisibility(View.VISIBLE);
    }
    else {
        tickStrava.setVisibility(View.INVISIBLE);
    }

}
0
Alex Kolydas 2 listopad 2018, 14:37

1 odpowiedź

Najlepsza odpowiedź

Spróbuj sprawdzić, czy to wina działania, a nie menu szuflady. Możesz określić czas dla metody onnectStrava(), co może powodować opóźnienie. Dodaj komunikaty dziennika na początku i na końcu metody.

public void connectStrava(){
Log.d(“TAG”, “STRAVA Entry point);
…
Log.d(“TAG”, “STRAVA Exit point);
}

Następnie sprawdź znaczniki czasu w IDE Logcat i zobacz, jak długo trwa uruchomienie metody. jeśli rzeczywiście jest to 1-2 sekundy, to wiesz, co powoduje opóźnienie. W takim przypadku możesz spróbować uruchomić metodę w osobnym wątku lub jako AsyncTask, aby metoda nie blokowała interfejsu użytkownika

1
Nikos Hidalgo 2 listopad 2018, 15:03