【问题标题】:My app takes a long time from going from one activity to another我的应用从一项活动转到另一项活动需要很长时间
【发布时间】:2018-06-12 17:57:06
【问题描述】:

我正在为我的学校选举制作一个应用程序,当我按下首页上的开始屏幕时,我需要持续按下大约 5 秒钟才能进入下一页,这同样适用于所有其他页面我该怎么做解决这个问题?

这是我的代码:

public class MainActivity extends Activity {
public void goMain (View v) {
    Button mainPage = (Button) findViewById(R.id.mainPage);
    mainPage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, Main2Activity.class);
            startActivity(intent);
        }
    });
}
    public void theFinal (View viewOne){
        ImageButton resultClick = (ImageButton) findViewById(R.id.resultClick);
        resultClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Results.class);
                startActivity(intent);
            }
        });

    }

其余的活动都有投票按钮,可以像这样进行下一个活动:

package com.example.saisriram.studentelections;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;

public class Main2Activity extends Activity {

int firstHb;
int secHb;
public void hbOne (View v){
    Button hbUno = (Button) findViewById(R.id.hbUno);
    hbUno.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            firstHb = firstHb + 1;
            Intent intent = new 
    Intent(Main2Activity.this,Main3Activity.class);

            startActivity(intent);
        }
    });

}
public void hbTwo (View the){
    Button hbDuo = (Button) findViewById(R.id.hbDuo);
    hbDuo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            secHb = secHb + 1;
            Intent intent = new Intent(Main2Activity.this,Main3Activity.class);
            startActivity(intent);
        }
    });
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main2);
 }
}

【问题讨论】:

  • 使用“Android Profiler”查找问题。 developer.android.com/studio/profile/android-profiler
  • 哪个活动打开时比较慢?结果?您显示的代码仅设置点击侦听器,是吗?那是你的活动唯一做的事情吗?您也可以发布结果活动
  • 不,我还没有完成结果活动,因为我想先完成所有基本的事情。每次按下按钮时它们都很慢,需要几秒钟和几下才能进入下一页,我不知道为什么它只是说应用程序可能在其主线程上做了太多工作
  • oncreate 方法在哪里?您没有显示所有代码吗?清单是什么样的?
  • 你是在模拟器上运行它吗?调试模式、模拟器以及您正在运行的机器的组合很可能会导致它变慢。对于健全性检查,我建议在真实设备上以发布模式运行它。将其安装在您的设备上。从那里运行它,看看您是否仍然感到延迟。

标签: android performance android-layout android-studio


【解决方案1】:

如果加载活动需要更长的时间,那么您肯定在活动生命周期方法中进行了一些长时间的操作。执行的 OnResume() 意味着,UI 对用户完全可见,并且现在很难处理。但似乎你在 onResume() 完成之前做了一些繁重的操作。在工作线程中移动长操作以使 UI 加载平滑。

【讨论】:

  • 但是我给你看了我的代码,我没有做繁重的操作我只是增加变量并进入下一个活动,为什么它不流畅?
【解决方案2】:

您是在模拟器上运行它吗?调试模式、模拟器以及您正在运行的机器的组合很可能会导致它变慢。对于健全性检查,我建议在真实设备上以发布模式运行它。将其安装在您的设备上。从那里运行它,看看你是否仍然感觉到延迟。如果这样可以解决问题,则可能是您的开发机器+模拟器引起了问题。如果没有,我会再次查看 Android Profiler 以更好地了解所消耗的内存。

【讨论】:

  • 我也在真机上运行过,问题依然存在,我用过android分析我不知道如何真正解决这个问题,请帮忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
相关资源
最近更新 更多