2011-09-06 41 views
9

Tôi hiển thị bánh mì nướng, nó sẽ không biến mất, ngay cả sau khi ứng dụng được đóng lại. Làm cách nào để khắc phục?Bánh mì nướng Android sẽ không biến mất

@Override 
public void onClipStoreLoadedClipsNotification(ClipStoreLoadedClipsNotification notif) 
{ 
    final ClipStoreLoadedClipsNotification notification = notif; 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() 
     { 
      Dialogs.DismissAll(); 
      list.onRefreshComplete(); 
      TextView text = (TextView)findViewById(R.id.loadclipstext); 
      ProgressBar pb = (ProgressBar)findViewById(R.id.loadclipsprogress); 

      if (notification.moreClipsAvailable) 
      { 
       text.setText(context.getString(R.string.loading_clips)); 
       pb.setVisibility(View.VISIBLE); 
      } 
      else 
      { 
       text.setText(context.getString(R.string.no_clips)); 
       pb.setVisibility(View.INVISIBLE); 
       int duration = Toast.LENGTH_SHORT; 
       Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); 
      } 

      SugarLoafContext.currentCamera = notification.camera; 
      clipList = notification.clips; 

      refreshListView(); 
      readyToLoadMoreClips = true; 
      if (!firstClipsLoaded) 
       firstClipsLoaded = true; 
     } 
    }); 


} 
+0

đặt thời lượng như thời lượng int này = Toast.LENGTH_SHORT; –

Trả lời

7

Giải thích duy nhất là Toast được gọi trong vòng lặp. Bạn nên theo dõi toast .show() và xem nó không được gọi là một thời gian vô hạn.

Một cách trực quan khác sẽ làm điều này

Toast.makeText(SugarLoafContext.playbackTabContext, "No clips found.", duration).show(); 
Toast.makeText(SugarLoafContext.playbackTabContext, "Do you understand now?", duration).show(); 

tôi chắc chắn bạn sẽ thấy cả hai bánh mì nướng cách khác trong một thời gian looong ...

44

là nó chạy bên trong một IntentService ??? Nếu nó là như vậy, vấn đề là dịch vụ Intent trong Android chạy trong một chủ đề khác với chủ đề chính, vì vậy bánh mì nướng được hiển thị trong một chủ đề khác với chủ đề chính, sau khi thời gian để hiển thị kết thúc, hệ thống Android không thể tìm thấy bánh mì nướng ở đâu, do đó, nó không thể loại bỏ nó.

Tôi đã gặp vấn đề tương tự, và bây giờ, tôi khuyên mọi người KHÔNG nên hiển thị Toast bên trong IntentService, thay vào đó hãy thử chạy một Dịch vụ commom hoặc để mở Hoạt động hoặc thử điều gì đó khác nếu cần thiết. Bánh mì nướng.

Thực tế là bánh mì nướng không biến mất khi bạn đóng ứng dụng là IntentService vẫn đang chạy và bạn phải khởi động lại hệ thống hoặc gỡ cài đặt Ứng dụng cho Dịch vụ mục đích sắp đóng.

+0

Nó không hoàn toàn là một vấn đề với tôi, tôi đã rất vui mừng khi thấy một cái gì đó chạy trên nền :-) – Nabin

+0

Đối với tôi cũng phải đối mặt với một số vấn đề, cùng tôi cũng sử dụng IntentService. Có giải pháp nào cho điều này? – sandeepmaaram

+0

Khởi chạy Hoạt động và cho phép Hoạt động là hoạt động khởi chạy Bánh mì nướng. Tôi biết nó là khó, nhưng chúng ta phải hiểu IntentService không hoạt động trên UI Thread, vì vậy chúng ta phải khởi chạy một Activity (với cờ NEW_TASK, và để Activity khởi chạy Toast). Nếu muốn, bạn có thể khởi chạy Activity là vô hình để người dùng không thấy gì lạ. Nếu không, bạn cũng có thể kiểm tra phần tử Snackbar: https://developer.android.com/reference/android/support/design/widget/Snackbar.html – zapotec

0

Điều này cũng có thể xảy ra nếu thiết bị của bạn không có kết nối mạng và ứng dụng của bạn thực hiện kiểm tra giấy phép và hiển thị Bánh mì nướng kết quả. Một trong các ứng dụng của tôi gặp sự cố này, vì tôi đã hiển thị một Bánh mì nướng khi kiểm tra ứng dụng đã được cấp phép. Nếu không có kết nối mạng, Toast nói với người dùng rằng việc thử lại giấy phép vẫn được thực hiện, và khi tôi kết nối Toast đã bị xóa, vì kiểm tra giấy phép có thể hoạt động.

Các vấn đề liên quan