Android按钮动作缓慢

时间:2012-12-07 16:14:08

标签: java android button android-activity sdk

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

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

秒数和ms当然每次在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();
                    }
                }   
                }
            }
        }

    );}}

我不知道这些活动会让它变得如此缓慢?

1 个答案:

答案 0 :(得分: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秒吗?它试图做的事情真的那么糟糕吗?