android - 应用程序活动延迟在导航抽屉上首次打开时
问题描述
我的导航抽屉活动遇到问题。当我 第一次打开此活动时 ,它有 1-2 秒的延迟,当我再次打开它时,它变得更好(不完美但更好)。是因为它可能正在导入其他 API?我添加了一个异步任务,但仍然没有。
这是此活动的代码
public class ImportAPI extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
public TextView fullnameside, emailside;
public static String stravaToken;
public static 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);
new connectStrava().execute("start");
}
@SuppressLint("StaticFieldLeak")
class connectStrava extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
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(ImportAPI.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);
}
}
@Override
protected String doInBackground(String... aurl) {
Log.d("Alekos","TAK4");
return null;
}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
}
@Override
protected void onPostExecute(String unused) {
}
}
解决方案
我认为您正在 AsyncTask 的 onPreexecute() 中执行一些阻塞任务。请修改您的 AsyncTask 如下。
class connectStrava extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
btnStrava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent getStravaApi= new Intent(ImportAPI.this,StravaSetupApi.class);
startActivity(getStravaApi);
}
});
}
@Override
protected String doInBackground(String... aurl) {
//GET ACCESS TOKEN FROM STRAVAS AUTHORIZE ACCOUNT
String accessToken = StravaAuthenticateActivity.getStravaAccessToken(ImportAPI.this);
stravaToken=accessToken; //make static var so i can use it anywhere i want
//Get athletes activities from GetStravaAthleteActivities.java
new GetStravaAthleteActivities.AthleteActivities();
return stravaToken;
}
protected void onProgressUpdate(String... progress) {
Log.d("ANDRO_ASYNC",progress[0]);
}
@Override
protected void onPostExecute(String result) {
//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);
}
}
}
推荐阅读
- json - 使用 Postman 发送 Gmail 时出现应用程序/Json 错误
- angular - 如何在 shadow dom 内运行 angular?
- csv - 是否有一个示例说明如何在 Ansible 中循环遍历 csv 文件并将值放入 dict 而不是列表中?
- php - 在日期解析 JSON API 响应
- reactjs - setState 根本不更新状态
- python - 我希望 pygame 中的这个立方体在我更新它时移动
- c# - ASP.NET MVC AJAX 调用控制器不返回任何数据
- python - Scrapy蜘蛛错误处理(scrapy.core.scraper)
- google-cloud-platform - 如何使用消息排序部署 pubsub 触发的云功能?
- c# - RDLC 报告错误:子报告 IIS 配置的数据检索失败