2012-12-01 104 views
1

我正在製作一個遊戲,當你觸摸圖像的任何地方時,彈出一個a秒1000毫秒。但這是問題如果我關閉了活動,它會崩潰,所以我添加了一個時間處理程序來關閉活動。但是那又產生了另一個問題看起來新的活動正在被調用,但te處理程序不會關閉活動。爲什麼我的應用程序不能關閉時間處理程序?

我附加問題出現的lvl1的活動。 (我使用不同顏色的背景不可見圖像來設置可觸摸區域,例如,背景顏色爲白色時返回彈出窗口,當它爲黃色時,它會調用另一個活動,等等。 'T似乎摩托羅拉說不上爲什麼工作。))

這是彈出

else if (ct.closeMatch (Color.WHITE, touchColor, tolerance)) // con esto evito poing & click muy seguidos 
{   
    Random r = new Random(); 
    int txt= r.nextInt(6-0) + 0; 
    if(txt==0){ variables.pointtxt = "Nothing interesting"; } 
    else if (txt==1){ variables.pointtxt = "There´s nothing there"; } 
    else if (txt==2){ variables.pointtxt = "I can´t do nothing with that"; } 
    else if (txt==3){ variables.pointtxt = "Wait... nop nothing"; } 
    else if (txt==4){ variables.pointtxt = "Nothing"; } 
    else if (txt==5){ variables.pointtxt = "More nothing"; } 

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

View popupView = layoutInflater.inflate(R.layout.popup, null); 
final PopupWindow popupWindow = new PopupWindow(
    popupView, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
TextView text = (TextView) popupView.findViewById(R.id.popuptxt); 
text.setText(variables.pointtxt); 

popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 250); 

new Handler().postDelayed(new Runnable() { 
     public void run() {  
     if (popupWindow.isShowing()== true) 
      popupWindow.dismiss(); 
     } 
    }, 1100 
);   
} 

handledHere = true; 
break; 

default: 
    handledHere = false; 
} // end switch 

的處理器和我這是怎麼收的活動,並呼籲新的活動

else if (ct.closeMatch (Color.YELLOW, touchColor, tolerance)) { 
    Intent game = new Intent(lvl1.this, lvl1_0.class); startActivity(game); 
    Handler mHandler1 = new Handler(); 
    { 
    Runnable mLaunchTask3 = null; 
    mHandler1.postDelayed(mLaunchTask3,1100); 
    } 

    //will launch the activity 
    Runnable mLaunchTask3 = new Runnable() { 
    public void run() { 
     lvl1.this.finish(); 
    } 
    }; 
} 

回答

0

關閉活動時使用此代碼刪除處理程序:

mHandler1.removeCallbacksAndMessages(null); 

,因爲當你開始新的處理程序,處理程序之前不會刪除,它會continute在後臺運行

+0

非常感謝! 它的工作!我想我必須提供服務來管理這些應用,但這樣做會更好。 – Rodrigofantino

相關問題