특정 인터벌 루프에서 이미지를 표시하는 데 사용되는 핸들러가 있으며 마지막 이미지에 도달하면 올바른 첫 번째 이미지로 돌아갑니다. 그러나 일부 장치가 충돌을 일으키고 CPU 사용량이 현저히 증가하게되므로 문제가 발생합니다. 코드에 무엇이 문제가 있는지 궁금합니다.Android SDK : 일부 기기에서 충돌을 일으키는 핸들러
내가 조각의 상단에 다음과 같이 인스턴스화 : 위의 AsyncTask를 호출 할 때
@Override
protected void onPostExecute(Void v) {
if(!isRunning) {
Runnable runnable = new Runnable() {
@Override
public void run() {
anImageView.setVisibility(View.VISIBLE);
isRunning = true;
counter++;
//imageDownloader.download(data.get(i).getImageURL(), anmageView);
if(TabsViewPagerFragmentActivity.theImages !=null && TabsViewPagerFragmentActivity.theImages.size() > 0){
Bitmap anImage = TabsViewPagerFragmentActivity.theImages.get(i);
anImageView.setImageBitmap(anImage);
}
i++;
if(i>TabsViewPagerFragmentActivity.theImages.size()-1)
{
i=0;
}
handler.postDelayed(this, 1500);
}
};
handler.postDelayed(runnable, 0);
}
}
: AsyncTask를의 onPostExecute 부분에 다음
final public static Handler handler = new Handler();
boolean isRunning = false;
,이 코드가 onCreate() 메서드 내에서. 둘째, 주기적으로 변경되는 최신 이미지를 얻기 위해 이미지를 다시 다운로드하는 새로 고침 단추가 있습니다. 따라서 새로 고침 단추에 연결된 onClick() 이벤트가 있습니다. 이것은 또한 잘 작동하지만 여기에 호출되는 코드는 다음과 같습니다.
@Override
protected void onPostExecute(Void v) {
for(int i=0;i<data.size()-1;i++) {
Bitmap anImage = getBitmapFromURL(data.get(i).getImageURL());
theImagesRefreshed.add(anImage);
}
if(!isRunning) {
Runnable runnable = new Runnable() {
@Override
public void run() {
anImageView.setVisibility(View.VISIBLE);
isRunning = true;
counter++;
//imageDownloader.download(data.get(i).getImageURL(), anImageView);
if(theImagesRefreshed !=null && theImagesRefreshed.size() > 0){
Bitmap anImage = theImagesRefreshed.get(i);
anImageView.setImageBitmap(anImage);
}
i++;
if(i>theImagesRefreshed.size()-1)
{
i=0;
}
handler.postDelayed(this, 1500);
}
};
handler.postDelayed(runnable, 0);
}
}
나는 핸들러가 올바르게 설정되지 않았으며 성능 문제를 일으키는 것으로 생각합니다. 누구든지이 코드가 잘못된 것을 볼 수 있습니까?
미리 감사드립니다.
감사의 인스턴스를 생성 한 후 내가 – Dave
를 보이지 않았다 것을 시도 할 것이다 Looper.prepare()를 호출 할 필요가 불행하게도 - 안드로이드 OS가 앱을 떠난 후에 애플리케이션을 죽인다 – Dave
크래시 로그를 넣을 수 있습니까 ?? – Payal