In App Purchasing (Async Tasks)을 방해하는 TimerTask에 문제가 있습니다. 스레드가 약해서 UI UI 스레드에서 실행 중이므로 리소스가 많이 소모됩니다. UI 스레드 외부에서 어떻게 실행합니까? 나는 수색을하고, 핸들러를 사용하여 몇 가지 제안을 시도했다. 하지만 같은 결과를 얻는 것처럼 보입니다. 앱이 실제로 느려집니다. 이 작업을 실행하지 않을 때 (500mS마다 새로 고침) 활동이 원활하게 실행되며 앱내 구매 중에는 응답이 없습니다. 당신의 도움이 감사합니다, 아래의 코드는 :Main UI 스레드에서 TimerTask를 실행하는 방법은 무엇입니까?
공용 클래스 DummyButtonClickerActivity는 활동 {
protected Timer timeTicker = new Timer("Ticker");
private Handler timerHandler = new Handler();
protected int timeTickDown = 20;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainhd);
// start money earned timer handler
TimerTask tick = new TimerTask() {
public void run() {
myTickTask();
}
};
timeTicker.scheduleAtFixedRate(tick, 0, 500); // 500 ms each
} // End OnCreate
protected void myTickTask() {
if (timeTickDown == 0) {
/// run my code here
//total = total + _Rate;
timerHandler.post(doUpdateTimeout);
}
else if(timeTickDown < 0) {
// do nothing
}
timeTickDown--;
}
private Runnable doUpdateTimeout = new Runnable() {
public void run() {
updateTimeout();
}
};
private void updateTimeout() {
// reset tick
timeTickDown = 2; // 2* 500ms == once a second
}
}
이
왜 30 초마다 실행해야합니까 ?? 디자인을 다시 생각해보십시오. – Rob
코드를 그대로 들여 쓰는 것은 매우 어렵습니다. –