2

我有一个指向另一个页面的按钮。每当我单击它时,我都会在 logcat 中获得此信息代码:

12-07 16:09:45.073: I/ActivityManager(273): Displayed com.example.prva/.button: +1s764ms

秒和毫秒当然每次在 1-3 秒之间变化。问题是我注意到该按钮打开该页面需要一段时间。它有某种暂停或其他什么,这是我在 logcat 中找到的唯一可以连接到它的相关内容。我该如何解决这个问题,为什么这个按钮动作“慢”?

这是按钮代码所在的位置:

   package com.example.prva;

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

public class Meni_Splash extends Activity{  


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     

        Button btnv = (Button) findViewById(R.id.buttonv);
        btnv.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent(Meni_Splash.this, button.class));              
            }
        });         
    }
}

这是打开的课程:

package com.example.prva;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;

public class button extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.button);

        //Button click sound
        final MediaPlayer MPRadio1 = MediaPlayer.create(this, R.raw.radio1);
        final MediaPlayer MPRadio2 = MediaPlayer.create(this, R.raw.radio2);
        final MediaPlayer MPRadio3 = MediaPlayer.create(this, R.raw.radio3);

        final RadioButton rb1, rb2, rb3;        

        rb1 = (RadioButton) findViewById(R.id.radio1);
        rb2 = (RadioButton) findViewById(R.id.radio2);
        rb3 = (RadioButton) findViewById(R.id.radio3);


        Button btn = (Button) findViewById(R.id.buttonplay);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub      
                if(rb1.isChecked())
                {
                MPRadio1.start();
                }
            else
                {
                if(rb2.isChecked())
                {
                    MPRadio2.start();
                }
                    else
                    {
                        if(rb3.isChecked())
                        {
                        MPRadio3.start();
                    }
                }   
                }
            }
        }

    );}}

我不知道是什么东西让这些活动变得如此缓慢?

4

1 回答 1

2

老实说,您的代码看起来相当不错。不完全确定是什么导致它缓慢初始化。

但有两个方面值得关注。

首先,最有可能的是您的布局加载:

    setContentView(R.layout.button);

我不认为你的布局很复杂。但是,如果页面上通常有很多嵌套视图(其他线性布局中的线性布局)或很多视图(文本视图等),那么“膨胀”布局可能需要一段时间。

或者,不太可能的是,MediaPlayer.create 需要很长时间才能加载。我建议这样做的原因是我不知道它是如何工作的,因为我以前没有使用过它。

    //Button click sound
    final MediaPlayer MPRadio1 = MediaPlayer.create(this, R.raw.radio1);
    final MediaPlayer MPRadio2 = MediaPlayer.create(this, R.raw.radio2);
    final MediaPlayer MPRadio3 = MediaPlayer.create(this, R.raw.radio3);

最好的办法是使用 DDMS 分析器对其进行分析。或者在它周围放一个计时器,然后将结果打印到 logcat。

另外,快速说明一下,加载只需 2-3 秒吗?它试图做的事情真的那么糟糕吗?

于 2012-12-07T22:42:53.213 回答