java - Android 页面在图片下载过程中崩溃

标签 java android

我是一名极端的 Android/Java 新手,正在开发我的第一个 Android 应用程序。

我有一个页面,它从 php/mySQL 页面下载数据并将其显示在屏幕布局上。数据将包含某些字段;标题、摘要、照片等。“照片”字段是在线存储的图像的 URL。

当照片链接字段为空时,页面似乎工作正常。当图像很小时,页面似乎工作正常。但是当图像的文件大小较大时,应用程序就会崩溃。

此页面的完整代码如下所示,因为我不知道此代码可能存在问题!

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.InputStream;

public class DetailScreen extends android.support.v4.app.Fragment {
RelativeLayout relativeLayout;

ProgressDialog progressDialog;
DownloadImageTask d;
ImageView imageView;
int tab,position;

ImageView detail_image;
TextView detail_head;
TextView detail_disc;
TextView detail_date;
TextView detail_detail;
TextView detail_url;

Bitmap imageBitmap = null;

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putParcelable("imageBitmap",imageBitmap);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState != null) {
        imageBitmap = savedInstanceState.getParcelable("imageBitmap");
    }

    Bundle bundle = this.getArguments();
    if(bundle != null) {
        tab = bundle.getInt(BackEnd.TAB);
        position = bundle.getInt(BackEnd.POSITION);
    }
}

void setValues()
{

    JSONArray RawData = (tab == 0) ? BackEnd.news : BackEnd.events;
    JSONObject data = null;

    try {
        data = (JSONObject) RawData.get(position);
    }
    catch (JSONException e) {
        e.printStackTrace();
    }

    try {
        assert data != null;
        if(imageBitmap == null) {
            d = new DownloadImageTask(detail_image);
            d.execute((String) data.get("photograph"));
            progressDialog = new ProgressDialog(getActivity());
            progressDialog.setMessage("Loading Image");
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {
                    d.cancel(true);
                    Toast.makeText(getActivity(), "Unable to load Image", Toast.LENGTH_SHORT).show();
                }
            });
            progressDialog.show();

        }

        detail_head.setText((String) data.get("title"));
        detail_disc.setText((String) data.get((tab==0)?"summary":"location"));
        detail_date.setText((String) data.get("date"));
        detail_detail.setText(Html.fromHtml((String) data.get("details")));
        if (tab == 0) {
            final String url = (String) data.get("url");
            detail_url.setText(getResources().getString(R.string.urlMessage));
            detail_url.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    TextView t = (TextView) v;
                    t.setTextColor(Color.BLACK);
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(browserIntent);
                }
            });
        } else {
            View view = getView();
            if(view != null) {
                TextView textView = (TextView) view.findViewById(R.id.detail_url);
                textView.setText("");
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    relativeLayout = (RelativeLayout) getActivity().findViewById(R.id.actionBarCustom);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

    imageView = new ImageView(getActivity());
    imageView.setImageResource(R.drawable.ic_action_back);
    imageView.setLayoutParams(params);

    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            android.support.v4.app.Fragment fragment = new Page4();
            getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.mainContent, fragment).addToBackStack(null).commit();
        }

    });
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    detail_image = (ImageView) view.findViewById(R.id.detail_image);
    if(imageBitmap != null)
        detail_image.setImageBitmap(imageBitmap);

    detail_head = (TextView) view.findViewById(R.id.detail_head);
    detail_disc = (TextView) view.findViewById(R.id.detail_disc);
    detail_date = (TextView) view.findViewById(R.id.detail_date);
    detail_detail = (TextView) view.findViewById(R.id.detail_detail);
    detail_url = (TextView) view.findViewById(R.id.detail_url);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_detail_screen, container, false);
}

@Override
public void onResume() {
    super.onResume();
    TextView t=(TextView)relativeLayout.findViewById(R.id.actionText);
     t.setText("Details");
    relativeLayout.addView(imageView);
    setValues();
}

@Override
public void onPause() {
    super.onPause();
    relativeLayout.removeView(imageView);
}

class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;
    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }
    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        imageBitmap = result;
        bmImage.setImageBitmap(result);
        progressDialog.hide();
    }
}
}

任何人都可以对这个问题提出任何想法,或者看到我上面的代码有任何问题吗?

崩溃日志:

10-15 16:59:35.436 6137-6538/com E/dalvikvm-heap: Out of memory on a 25137936-byte allocation.
10-15 16:59:35.436 6137-6538/com I/dalvikvm: "AsyncTask #4" prio=5 tid=15 RUNNABLE
10-15 16:59:35.436 6137-6538/com I/dalvikvm:   | group="main" sCount=0 dsCount=0 obj=0x44106838 self=0x5fcb1a80
10-15 16:59:35.436 6137-6538/com I/dalvikvm:   | sysTid=6538 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1606718640
10-15 16:59:35.436 6137-6538/com I/dalvikvm:   | state=R schedstat=( 101296084 23520127 71 ) utm=7 stm=2 core=1
10-15 16:59:35.436 6137-6538/com I/dalvikvm:     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:696)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at com.DetailScreen$DownloadImageTask.doInBackground(DetailScreen.java:198)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at com.DetailScreen$DownloadImageTask.doInBackground(DetailScreen.java:188)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-15 16:59:35.441 6137-6538/com I/dalvikvm:     at java.lang.Thread.run(Thread.java:841)
10-15 16:59:35.446 6137-6146/com D/AbsListView: [unregisterDoubleTapMotionListener]
10-15 16:59:35.446 6137-6538/com D/skia: --- decoder->decode returned false
10-15 16:59:35.446 6137-6538/com W/dalvikvm: threadid=15: thread exiting with uncaught exception (group=0x41b7c700)
10-15 16:59:35.446 6137-6146/com I/MotionRecognitionManager:   .unregisterListener : / listener count = 0->0,  
10-15 16:59:35.446 6137-6146/com D/AbsListView: unregisterIRListener() is called 
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground()
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:841)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:  Caused by: java.lang.OutOfMemoryError
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:696)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at com.DetailScreen$DownloadImageTask.doInBackground(DetailScreen.java:198)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at com.DetailScreen$DownloadImageTask.doInBackground(DetailScreen.java:188)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
10-15 16:59:35.451 6137-6538/com E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:841) 
10-15 16:59:35.456 6137-6146/com D/AbsListView: [unregisterDoubleTapMotionListener]
10-15 16:59:35.456 6137-6146/com I/MotionRecognitionManager:   .unregisterListener : / listener count = 0->0,  
10-15 16:59:35.456 6137-6146/com D/AbsListView: unregisterIRListener() is called 
10-15 16:59:35.456 6137-6146/com D/AbsListView: [unregisterDoubleTapMotionListener]
10-15 16:59:35.456 6137-6146/com I/MotionRecognitionManager:   .unregisterListener : / listener count = 0->0,  
10-15 16:59:35.456 6137-6146/com D/AbsListView: unregisterIRListener() is called 
10-15 16:59:35.456 6137-6146/com D/AbsListView: [unregisterDoubleTapMotionListener]
10-15 16:59:35.461 6137-6146/com I/MotionRecognitionManager:   .unregisterListener : / listener count = 0->0,  
10-15 16:59:35.461 6137-6146/com D/AbsListView: unregisterIRListener() is called 
10-15 16:59:42.706 6137-6137/com I/Choreographer: Skipped 422 frames!  The application may be doing too much work on its main thread.
10-15 16:59:43.536 6137-6137/com D/AbsListView: onDetachedFromWindow
10-15 16:59:43.566 6137-6137/com E/WindowManager: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{44128b10 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.566 6137-6137/com E/WindowManager: android.view.WindowLeaked: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{44128b10 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:452)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.app.Dialog.show(Dialog.java:287)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at com.DetailScreen.setValues(DetailScreen.java:95)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at com.DetailScreen.onResume(DetailScreen.java:179)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.Fragment.performResume(Fragment.java:2005)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.os.Handler.handleCallback(Handler.java:730)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.os.Looper.loop(Looper.java:176)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at android.app.ActivityThread.main(ActivityThread.java:5419)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invoke(Method.java:525)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-15 16:59:43.566 6137-6137/com E/WindowManager:     at dalvik.system.NativeStart.main(Native Method)
10-15 16:59:43.576 6137-6137/com E/WindowManager: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{441be848 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.576 6137-6137/com E/WindowManager: android.view.WindowLeaked: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{441be848 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:452)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.app.Dialog.show(Dialog.java:287)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at com.DetailScreen.setValues(DetailScreen.java:95)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at com.DetailScreen.onResume(DetailScreen.java:179)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.Fragment.performResume(Fragment.java:2005)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.os.Handler.handleCallback(Handler.java:730)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.os.Looper.loop(Looper.java:176)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at android.app.ActivityThread.main(ActivityThread.java:5419)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invoke(Method.java:525)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-15 16:59:43.576 6137-6137/com E/WindowManager:     at dalvik.system.NativeStart.main(Native Method)
10-15 16:59:43.586 6137-6137/com E/WindowManager: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{44252ad8 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.586 6137-6137/com E/WindowManager: android.view.WindowLeaked: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{44252ad8 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:452)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.app.Dialog.show(Dialog.java:287)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at com.DetailScreen.setValues(DetailScreen.java:95)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at com.DetailScreen.onResume(DetailScreen.java:179)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.Fragment.performResume(Fragment.java:2005)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.os.Handler.handleCallback(Handler.java:730)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.os.Looper.loop(Looper.java:176)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at android.app.ActivityThread.main(ActivityThread.java:5419)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invoke(Method.java:525)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-15 16:59:43.586 6137-6137/com E/WindowManager:     at dalvik.system.NativeStart.main(Native Method)
10-15 16:59:43.591 6137-6137/com E/WindowManager: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{442e5b90 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.591 6137-6137/com E/WindowManager: android.view.WindowLeaked: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{442e5b90 G.E..... R.....ID 0,0-684,192} that was originally added here
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:452)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.app.Dialog.show(Dialog.java:287)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at com.DetailScreen.setValues(DetailScreen.java:95)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at com.DetailScreen.onResume(DetailScreen.java:179)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.Fragment.performResume(Fragment.java:2005)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.os.Handler.handleCallback(Handler.java:730)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.os.Looper.loop(Looper.java:176)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at android.app.ActivityThread.main(ActivityThread.java:5419)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invoke(Method.java:525)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-15 16:59:43.591 6137-6137/com E/WindowManager:     at dalvik.system.NativeStart.main(Native Method)
10-15 16:59:43.596 6137-6137/com E/WindowManager: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4437be38 V.E..... R......D 0,0-684,192} that was originally added here
10-15 16:59:43.596 6137-6137/com E/WindowManager: android.view.WindowLeaked: Activity com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4437be38 V.E..... R......D 0,0-684,192} that was originally added here
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:452)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.app.Dialog.show(Dialog.java:287)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at com.DetailScreen.setValues(DetailScreen.java:95)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at com.DetailScreen.onResume(DetailScreen.java:179)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.Fragment.performResume(Fragment.java:2005)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.os.Handler.handleCallback(Handler.java:730)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.os.Looper.loop(Looper.java:176)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at android.app.ActivityThread.main(ActivityThread.java:5419)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at java.lang.reflect.Method.invoke(Method.java:525)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-15 16:59:43.596 6137-6137/com E/WindowManager:     at dalvik.system.NativeStart.main(Native Method)

我知道 php/mySQL 部分工作正常。某些图像上的这个页面似乎确实如此,当加载旋转器旋转时,应用程序会崩溃。我唯一能看到的可能是照片尺寸较大时的原因。

最佳答案

您遇到内存不足错误。我猜您正在下载一张大图像。 我更喜欢你使用this库。它很棒并且易于使用。 该库下载图像并放入设备缓存中。如果您想了解更多详细使用方法,请随时撰写。

关于java - Android 页面在图片下载过程中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153008/

相关文章:

java - Glassfish - 上传图片 - 做对了

java - Android Studio 无法解析 : com. android.support :appcompat-v7. 28.0.0

java - 如何在不遍历整个 json 的情况下检索和更新 json 数组元素

Android - 从按钮中删除填充

android - 升级到 Pro 后,Unity Pro 试用版水印仍然显示

java - vscode 中 java 扩展的 Checkstyle

java - 数组转换为堆栈

java - 在 Java 中动态创建的 TextView - NullPointerException

java - android 文本不复制到剪贴板

android - 如何在 PreferenceScreen 中自定义 CheckBoxPreference 之间的分隔符