2016-04-08 9 views
0

Bonjour je suis débutant dans l'application de Developping android lorsque je tente de sauver l'image de mon hôte que je reçois cette erreurjava.lang.RuntimeException: Une erreur est survenue lors de l'exécution doInBackground() de FATAL EXCEPTION: AsyncTask # 2

cette application pour changer son fond de téléphone et fond WhatsApp quand je veux changer de fond WhatsApp je reçois cette erreur


04-07 20:00:04.655 19211-19269/com.anasraf.whatsappwallpaperhd W/dalvikvm: threadid=14: thread exiting with uncaught exception (group=0xa4b65648) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground() 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:841) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime: Caused by: java.lang.OutOfMemoryError 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:530) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:603) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at com.anasraf.whatsappwallpaperhd.SlideImageActivity$SaveTask.doInBackground(SlideImageActivity.java:599) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at com.anasraf.whatsappwallpaperhd.SlideImageActivity$SaveTask.doInBackground(SlideImageActivity.java:558) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)  
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)  
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)  
04-07 20:00:04.659 19211-19269/com.anasraf.whatsappwallpaperhd E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:841)  
04-07 20:00:06.475 19211-19211/com.anasraf.whatsappwallpaperhd W/EGL_genymotion: eglSurfaceAttrib not implemented 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager: Activity com.anasraf.whatsappwallpaperhd.SlideImageActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{52c576f8 V.E..... R......D 0,0-684,192} that was originally added here 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager: android.view.WindowLeaked: Activity com.anasraf.whatsappwallpaperhd.SlideImageActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{52c576f8 V.E..... R......D 0,0-684,192} that was originally added here 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.app.Dialog.show(Dialog.java:281) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at com.anasraf.whatsappwallpaperhd.SlideImageActivity$SaveTask.onPreExecute(SlideImageActivity.java:582) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.os.AsyncTask.execute(AsyncTask.java:534) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at com.anasraf.whatsappwallpaperhd.SlideImageActivity.onOptionsItemSelected(SlideImageActivity.java:272) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.app.Activity.onMenuItemSelected(Activity.java:2566) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:350) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.app.ActionBarActivity.onMenuItemSelected(ActionBarActivity.java:155) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.app.ActionBarActivityDelegate$1.onMenuItemSelected(ActionBarActivityDelegate.java:74) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.widget.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:44) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:77) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:163) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:738) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:802) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:949) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:939) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.support.v7.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:187) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.widget.AbsListView$1.run(AbsListView.java:3463) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.os.Handler.handleCallback(Handler.java:730) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.os.Looper.loop(Looper.java:137) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at android.app.ActivityThread.main(ActivityThread.java:5103) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at java.lang.reflect.Method.invokeNative(Native Method) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at java.lang.reflect.Method.invoke(Method.java:525) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-07 20:00:07.247 19211-19211/com.anasraf.whatsappwallpaperhd E/WindowManager:  at dalvik.system.NativeStart.main(Native Method) 

import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.InterstitialAd; 
import com.nostra13.universalimageloader.core.ImageLoader; 
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; 
import com.nostra13.universalimageloader.core.assist.FailReason; 
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener; 

import android.app.ProgressDialog; 
import android.app.WallpaperManager; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Toast; 
import lib.cropper.wallpaper.CropImageView; 

@SuppressWarnings("ALL") 
public class SetAsWallpaperActivity extends ActionBarActivity { 

    private CropImageView mCropImageView; 
    String[] mImages,mCatName; 
    int position; 
    Toolbar toolbar; 
    private InterstitialAd interstitial; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_set_as_wallpaper); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     Intent i=getIntent(); 
     mImages=i.getStringArrayExtra("WALLPAPER_IMAGE_URL"); 
     mCatName=i.getStringArrayExtra("WALLPAPER_IMAGE_CATEGORY"); 
     position=i.getIntExtra("POSITION_ID", 0); 
     mCropImageView = (CropImageView)findViewById(R.id.CropImageView); 

      ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(getApplicationContext())); 
      ImageLoader.getInstance().loadImage(Constant.SERVER_IMAGE_DETAILS+mImages[position], new ImageLoadingListener() { 

      @Override 
      public void onLoadingStarted(String arg0, View arg1) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { 
       // TODO Auto-generated method stub 
       mCropImageView.setImageBitmap(arg2); 
      } 

      @Override 
      public void onLoadingCancelled(String arg0, View arg1) { 
       // TODO Auto-generated method stub 

      } 
     }); 


    } 

    public void setAsWallpaper(View view) throws IOException 
     { 
     (new SetWallpaperTask(SetAsWallpaperActivity.this)).execute(""); 
     } 

    public class SetWallpaperTask extends AsyncTask<String , String , String> 
    { 
     private Context context; 
     private ProgressDialog pDialog; 
     Bitmap bmImg = null; 

     public SetWallpaperTask(Context context) { 
      this.context = context; 
     } 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 

      pDialog = new ProgressDialog(context); 
      pDialog.setMessage("Wallpaer set ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 

     } 

     @Override 
     protected String doInBackground(String... args) { 
      /* TODO Auto-generated method stub */ 
      bmImg=mCropImageView.getCroppedImage(); 
      return null; 
     } 


     @Override 
     protected void onPostExecute(String args) { 
      // TODO Auto-generated method stub 
      WallpaperManager wpm = WallpaperManager.getInstance(getApplicationContext()); // --The method context() is undefined for the type SetWallpaperTask 
      try { 
       wpm.setBitmap(bmImg); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      pDialog.dismiss(); 
      Toast.makeText(SetAsWallpaperActivity.this, "WallPaper Set", Toast.LENGTH_SHORT).show(); 
      // Prepare the Interstitial Ad 
      interstitial = new InterstitialAd(SetAsWallpaperActivity.this); 
      // Insert the Ad Unit ID 
      interstitial.setAdUnitId(getString(R.string.admob_interstitial_id)); 
      AdRequest adRequest = new AdRequest.Builder().build(); 
      // Load ads into Interstitial Ads 
      interstitial.loadAd(adRequest); 
      // Prepare an Interstitial Ad Listener 
      interstitial.setAdListener(new AdListener() { 
       public void onAdLoaded() { 
        // Call displayInterstitial() function 
        // If Ads are loaded, show Interstitial else show nothing. 
        if (interstitial.isLoaded()) { 
         interstitial.show(); 
        } 

       } 
      }); 
      finish(); 
     } 
    } 

    @Override 
     public boolean onOptionsItemSelected(MenuItem menuItem) 
     {  
      switch (menuItem.getItemId()) 
      { 
      case android.R.id.home: 
       onBackPressed(); 
       break; 

      default: 
       return super.onOptionsItemSelected(menuItem); 
      } 
      return true; 
     } 
} 

ce chargeur d'image

ImageLoader public class {

MemoryCache memoryCache=new MemoryCache(); 
    FileCache fileCache; 
    private Map<ImageView, String> imageViews=Collections.synchronizedMap(new WeakHashMap<ImageView, String>()); 
    ExecutorService executorService; 

    public ImageLoader(Context context){ 
     fileCache=new FileCache(context); 
     executorService=Executors.newFixedThreadPool(5); 
    } 

    final int stub_id= R.drawable.ic_launcher; 
    public void DisplayImage(String url, ImageView imageView) 
    { 
     imageViews.put(imageView, url); 
     Bitmap bitmap=memoryCache.get(url); 
     if(bitmap!=null) 
      imageView.setImageBitmap(bitmap); 
     else 
     { 
      queuePhoto(url, imageView); 
      imageView.setImageResource(stub_id); 
     } 
    } 

    private void queuePhoto(String url, ImageView imageView) 
    { 
     PhotoToLoad p=new PhotoToLoad(url, imageView); 
     executorService.submit(new PhotosLoader(p)); 
    } 

    private Bitmap getBitmap(String url) 
    { 
     File f=fileCache.getFile(url); 

     //from SD cache 
     Bitmap b = decodeFile(f); 
     if(b!=null) 
      return b; 

     //from web 
     try { 
      Bitmap bitmap=null; 
      URL imageUrl = new URL(url); 
      HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection(); 
      conn.setConnectTimeout(30000); 
      conn.setReadTimeout(30000); 
      conn.setInstanceFollowRedirects(true); 
      InputStream is=conn.getInputStream(); 
      OutputStream os = new FileOutputStream(f); 
      Utils.CopyStream(is, os); 
      os.close(); 
      bitmap = decodeFile(f); 
      return bitmap; 
     } catch (Exception ex){ 
      ex.printStackTrace(); 
      return null; 
     } 
    } 

    //decodes image and scales it to reduce memory consumption 
    private Bitmap decodeFile(File f){ 
     try { 
      //decode image size 
      BitmapFactory.Options o = new BitmapFactory.Options(); 
      o.inJustDecodeBounds = true; 
      BitmapFactory.decodeStream(new FileInputStream(f),null,o); 

      //Find the correct scale value. It should be the power of 2. 
      final int REQUIRED_SIZE=150; 
      int width_tmp=o.outWidth, height_tmp=o.outHeight; 
      int scale=1; 
      while(true){ 
       if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE) 
        break; 
       width_tmp/=2; 
       height_tmp/=2; 
       scale*=2; 
      } 

      //decode with inSampleSize 
      BitmapFactory.Options o2 = new BitmapFactory.Options(); 
      o2.inSampleSize=scale; 
      return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
     } catch (FileNotFoundException e) {} 
     return null; 
    } 

    //Task for the queue 
    private class PhotoToLoad 
    { 
     public String url; 
     public ImageView imageView; 
     public PhotoToLoad(String u, ImageView i){ 
      url=u; 
      imageView=i; 
     } 
    } 

    class PhotosLoader implements Runnable { 
     PhotoToLoad photoToLoad; 
     PhotosLoader(PhotoToLoad photoToLoad){ 
      this.photoToLoad=photoToLoad; 
     } 

     public void run() { 
      if(imageViewReused(photoToLoad)) 
       return; 
      Bitmap bmp=getBitmap(photoToLoad.url); 
      memoryCache.put(photoToLoad.url, bmp); 
      if(imageViewReused(photoToLoad)) 
       return; 
      BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad); 
      Activity a=(Activity)photoToLoad.imageView.getContext(); 
      a.runOnUiThread(bd); 
     } 
    } 

    boolean imageViewReused(PhotoToLoad photoToLoad){ 
     String tag=imageViews.get(photoToLoad.imageView); 
     if(tag==null || !tag.equals(photoToLoad.url)) 
      return true; 
     return false; 
    } 

    //Used to display bitmap in the UI thread 
    class BitmapDisplayer implements Runnable 
    { 
     Bitmap bitmap; 
     PhotoToLoad photoToLoad; 
     public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;} 
     public void run() 
     { 
      if(imageViewReused(photoToLoad)) 
       return; 
      if(bitmap!=null) 
      { 
       photoToLoad.imageView.setImageBitmap(bitmap); 

      }//else 
       // photoToLoad.imageView.setImageResource(stub_id); 
     } 
    } 

    public void clearCache() { 
     memoryCache.clear(); 
     fileCache.clear(); 
    } 

} 
+0

Votre trace de pile indique 'Causé par: java.lang.OutOfMemoryError'. Est ce que ça aide? Quelle est la taille de votre image? ... – Krease

+0

la taille de certaines images est comprise entre 1 et 2 Mo –

+0

Son rarement l'image immédiate - c'est la mémoire totale de votre application. Soit vous utilisez beaucoup trop ou vous avez une fuite. Utilisez un profileur de tas pour savoir où va votre mémoire. –

Répondre

0

Votre image est trop grande. Réduisez la résolution ou comprimez-la. Si c'est un jpg, convertissez-le en png. Cette website comprime png de 50-70% sans aucune perte de qualité discernable.