2012-12-07 34 views
2

我有一個導致另一個頁面的按鈕。每當我點擊它,我在logcat中獲取此信息代碼:Android按鈕慢動作

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

也許這是其他活動中的一件事情,它需要很長時間才能打開它。在onCreate或onResume方法? – Tooroop

+0

你在模擬器上試試嗎?如果是這樣嘗試在設備上。 – Greensy

+0

就像@Tooroop說的那樣,你的'Meni_Splash'很可能需要很長時間才能完成。 – Doomsknight

回答

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秒的加載?對於它想要做什麼來說它真的很糟糕?

+0

不幸的是button.xml只有3個小單選按鈕和一個普通按鈕。我所有的佈局只是背景顏色和一兩個按鈕。沒有什麼花哨。所以這不成問題。您發佈的這些代碼(MediaPlayer)只是將聲音鏈接到媒體播放器。它不是很糟糕,但如果你知道我的意思,整個應用程序看起來並不平坦。它看起來有點小錯誤,並且所有那些經常發生的小暫停(主要是當單擊一個創建新活動的按鈕時)會變得緩慢。謝謝您的幫助。 – user1880779

+0

@ user1880779對不起,我沒有太大的幫助。不知道還有什麼可以代碼明智的。可能它只是一個設備限制。您是否嘗試將屏幕移動到其他應用程序的屏幕上?他們是否也有遲到的反應? – Doomsknight

+0

我會嘗試在其他設備上測試它。感謝您的幫助! – user1880779