2013-09-04 2 views
0

Я новичок, поэтому, пожалуйста, воздержитесь, у меня есть некоторые изображения в моем приложении на SD-карте, и я хочу показать эти изображения пользователю один за другим на некоторое время, скажем, одно изображение затем другой через одну минуту, затем еще одну через одну минуту, как это. Я использую aysnctask для этого, в котором я конвертирую изображение в растровое изображение и показываю его. Я хочу показать эти изображения в непрерывном цикле, пока пользователь не появится из приложения приложение должно показывать изображения по одному я использую следующий код для него: -показ изображений в воображении в петле

 for(i=1;i<z-1;i++) 
    { 
    xc=cont_id.get(1).toString(); 
    what=Environment.getExternalStorageDirectory() + "/Playerimages/" + xc + ".jpg"; 
    play_duration=durat.get(1); 
    //s1.execute(what,play_duration); 
     new Showtime().execute(what,play_duration); 
     Log.i("lenght",String.valueOf(i));} 

, но когда я пытаюсь выполнить его в бесконечном цикле, как это мое приложение аварии: -

for(i=1;i<z-1;i++) 
    { 

    xc=cont_id.get(1).toString(); 
    what=Environment.getExternalStorageDirectory() + "/Playerimages/" + xc + ".jpg"; 
    play_duration=durat.get(1); 
    //s1.execute(what,play_duration); 
    new Showtime().execute(what,play_duration); 
    Log.i("lenght",String.valueOf(i)); 
     if(i=Z-1){ 
     i=1; 
     }} 

мое приложение разбился, пожалуйста, кто-то подскажет, как я могу добиться этого .. теперь мое приложение не врезаться, но это не показывает каких-либо изображений мой LogCat является ниже

09-04 12:11:31.807: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 
09-04 12:11:31.807: I/dalvikvm-heap(4358): Grow heap (frag case) to 48.000MB for 80-byte allocation 
09-04 12:11:32.182: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
09-04 12:11:32.182: D/dalvikvm(4358): GC_FOR_ALLOC freed 0K, 2% free 48571K/49159K, paused 372ms, total 372ms 
    09-04 12:11:32.182: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 
    09-04 12:11:32.182: I/dalvikvm-heap(4358): Grow heap (frag case) to 48.000MB for 20-byte allocation 
    09-04 12:11:32.182: D/dalvikvm(4358): WAIT_FOR_CONCURRENT_GC blocked 8390ms 
    09-04 12:11:32.557: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
    09-04 12:11:32.557: D/dalvikvm(4358): GC_FOR_ALLOC freed 0K, 2% free 48571K/49159K, paused 380ms, total 380ms 
    09-04 12:11:32.557: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 
    09-04 12:11:32.557: I/dalvikvm-heap(4358): Grow heap (frag case) to 48.000MB for 12-byte allocation 
    09-04 12:11:32.932: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
    09-04 12:11:32.932: D/dalvikvm(4358): GC_CONCURRENT freed 0K, 2% free 48571K/49159K, paused 2ms+3ms, total 371ms 
    09-04 12:11:32.932: D/dalvikvm(4358): WAIT_FOR_CONCURRENT_GC blocked 369ms 
    09-04 12:11:33.292: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
    09-04 12:11:33.292: D/dalvikvm(4358): GC_FOR_ALLOC freed 0K, 2% free 48571K/49159K, paused 362ms, total 362ms 
    09-04 12:11:33.292: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 
    09-04 12:11:33.292: I/dalvikvm-heap(4358): Grow heap (frag case) to 48.000MB for 110-byte allocation 
    09-04 12:11:33.659: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
    09-04 12:11:33.659: D/dalvikvm(4358): GC_FOR_ALLOC freed <1K, 2% free 48571K/49159K, paused 362ms, total 362ms 
    09-04 12:11:33.659: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 
    09-04 12:11:33.659: I/dalvikvm-heap(4358): Grow heap (frag case) to 48.000MB for 24-byte allocation 
    09-04 12:11:34.026: I/dalvikvm-heap(4358): Clamp target GC heap from 50.002MB to 48.000MB 
    09-04 12:11:34.026: D/dalvikvm(4358): GC_FOR_ALLOC freed <1K, 2% free 48571K/49159K, paused 368ms, total 368ms 
    09-04 12:11:34.026: I/dalvikvm-heap(4358): Clamp target GC heap from 48.002MB to 48.000MB 

и многое другое, как этот

+0

Сообщение выход LogCat –

+0

первое использование AsyncTask .... и пожалуйста показать LogCat .. – Piyush

ответ

0

Когда вы используете цикл for, он попытается сделать то, что вы делаете, как можно быстрее. new Showtime(). execute() не является блокирующим вызовом, поэтому вы в основном отбрасываете тысячи и тысячи потоков, загружая изображения и очень быстро исчерпывая память.

Итак, предполагая, что Showtime - это ваш AsyncTask, который вы хотите отключить следующую итерацию вашего изображения, когда эта задача завершится.

Удалите цикл for() и просто используйте свою задачу в качестве планировщика, который отображает изображение, а затем ждет, а затем отображает следующий.

Кроме того, не видя трассировки стека, невозможно узнать, что еще вы можете делать неправильно, но я считаю, что вы правильно загружаете свои растровые изображения (чего вы, возможно, не можете быть).

[EDIT] Вам действительно не нужна задача Async. Вы можете просто сделать это в работоспособной, что делает postDelayed так:

public void onCreate(Bundle b){ 
    super.onCreate(b); 

    //load your Layout 


    //start your image rotator 
    new Handler().post(showNextImage); 

} 


Runnable showNextImage = new Runnable(){ 
    public void run(){ 
     //draw your next image here 


     //now schedule your next image 
     new Handler().postDelayed(showNextImage, 60000);// show next image in a minute 
    } 

} 
+0

вы можете показать мне, как использовать AsyncTask с планировщиком и его Я выполняю asynctask с планировщиком, как я могу каждый раз передавать путь к нему. – newkid

+0

Я отредактировал с образцом кода для лучшего подхода. Здесь вам не нужна задача async. –

0

Этот код может помочь вам

https://code.google.com/p/android-slideshow/

В код ссылки Google перейдите на вкладку с надписью «Источник» и используйте subversion, чтобы получить код из репозитория.

И используйте это, чтобы получить путь к файлу.

String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+file_name