2010-11-19 24 views
1

Uygulamamda, donanım ses seviyesi tuşlarına basmanın mevcut ses düzeyine sahip bir Tost görüntüleyeceğini uygulayacağım. Çoğu zaman işler iyi gider. Bununla birlikte, ses tuşlarının uzun basışları başvurumun çökmesini başarabilir.Tost çöktü uygulaması

.... 
11-19 06:43:22.114 I/NotificationService(2783): enqueueToast pkg=com.FunTime.android [email protected] duration=0 
11-19 06:43:22.119 V/WindowManager(2783): Delivering key 25 to Window{47f6a930 com.FunTime.android/com.FunTime.android.map.MapActivity paused=false} 
11-19 06:43:22.164 I/NotificationService(2783): enqueueToast pkg=com.FunTime.android [email protected] duration=0 
11-19 06:43:22.169 V/WindowManager(2783): Delivering key 25 to Window{47f6a930 com.FunTime.android/com.FunTime.android.map.MapActivity paused=false} 
11-19 06:43:22.209 I/NotificationService(2783): enqueueToast pkg=com.FunTime.android [email protected] duration=0 

...many such notifications... 

11-19 06:43:22.244 E/SurfaceFlinger(2783): createSurface() failed, generateId = -12 
11-19 06:43:22.244 W/WindowManager(2783): OutOfResourcesException creating surface 
11-19 06:43:22.244 I/WindowManager(2783): Out of memory for surface! Looking for leaks... 
11-19 06:43:22.244 W/WindowManager(2783): No leaked surfaces; killing applicatons! 
11-19 06:43:22.244 W/ActivityManager(2783): Killing processes for memory at adjustment 0 
11-19 06:43:22.244 W/ActivityManager(2783): Killing for memory: ProcessRecord{47dd75c8 3246:com.FunTime.android/10079} (adj 0) 
11-19 06:43:22.244 I/Process (2783): Sending signal. PID: 3246 SIG: 9 
11-19 06:43:22.244 W/WindowManager(2783): Looks like we have reclaimed some memory, clearing surface for retry. 
11-19 06:43:22.244 W/WindowManager(2783): Due to memory failure, waiting a bit for next layout 

İzlediğim yaklaşım: Bir tost Nesnesi ve her tuşa basın olayı bir görünüm şişirmek algılandığı için, içinde görünüm unsurları ayarlamak tost ayarlayın aşağıdaki Günlüğü kazasında üretilen olduğunu ve sonra tostu göster.

Neyin yanlış gittiğine dair bir fikrin var mı? Tüm faaliyetler devralan hangi taban aktivite sınıfında yonunun Düzenlendi

:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN) 
    { 
     myAudioManager.getInstance().onVolumeDown(); 
       myAudioManager.getInstance().showVolumeAdjustment(myAudioManager.getInstance().getVolume()); 
     return true; 
    } 
    else if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) 
    { 
     myAudioManager.getInstance().onVolumeUp(); 
      myAudioManager.getInstance().showVolumeAdjustment(myAudioManager.getInstance().getVolume()); 
     return true; 
     } 
    return super.onKeyDown(keyCode, event); 
} 

myAudioManager

public void showVolumeAdjustment(final int adjustment) 
{ 
     volumeToast.setDuration(Toast.LENGTH_SHORT); 
     volumeToast.setView(getVolumeProgressBarView(adjustment)); 
     volumeToast.setGravity(Gravity.TOP,0,0); 
     volumeToast.show(); 
} 

private View getVolumeProgressBarView(int adjustment) 
{ 
     LayoutInflater inflater = (LayoutInflater) myApplication.getInstance().getApplicationContext() 
             .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     toastView= inflater.inflate(R.layout.volume_toast, null); 
     ProgressBar pb =(ProgressBar)toastView.findViewById(R.id.level); 
     pb.setMax(MAX_VOICE_VOLUME_ENGINE); 
     pb.setProgress(adjustment); 
     return toastView; 
} 
+0

Tuşa basma olay işleyicisini nasıl ayarladığınızı ve tostu nasıl göstereceğinizi gösteren kodu göndermelisiniz. Gerçekte ne yaptığınızı görmeden yanlış yaptığınızı söylemek zor. – Nailuj

cevap

2

yılında Çok fazla tost yapmak ve hafızayı doldurmak.

Oluşturulan tost sayısını sınırlamak için bir zamanlayıcıya veya bir şey koymaya çalışın.

İlgili konular