Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350_Java_Android_Dialog_Window - Fatal编程技术网

Java 活动泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350

Java 活动泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350,java,android,dialog,window,Java,Android,Dialog,Window,阅读有关此问题的所有文章,但似乎找不到与我的情况相符的文章,以下是日志: 02-18 18:56:16.872 7331-7331/com.familiestvw.whatson E/WindowManager﹕ Activity com.familiestvw.whatson.GetData has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350 V.E..... R......D

阅读有关此问题的所有文章,但似乎找不到与我的情况相符的文章,以下是日志:

02-18 18:56:16.872    7331-7331/com.familiestvw.whatson E/WindowManager﹕ Activity com.familiestvw.whatson.GetData has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350 V.E..... R......D 0,0-1026,288} that was originally added here
android.view.WindowLeaked: Activity com.familiestvw.whatson.GetData has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350 V.E..... R......D 0,0-1026,288} that was originally added here
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:450)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
        at android.app.Dialog.show(Dialog.java:287)
        at com.familiestvw.whatson.GetData$ProgressTask.onPreExecute(GetData.java:64)
        at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
        at android.os.AsyncTask.execute(AsyncTask.java:534)
        at com.familiestvw.whatson.GetData.onCreate(GetData.java:45)
        at android.app.Activity.performCreate(Activity.java:5372)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
        at android.app.ActivityThread.access$700(ActivityThread.java:159)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5419)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
        at dalvik.system.NativeStart.main(Native Method)
02-18 18:56:16.8727331-7331/com.familiestvw.whatson E/WindowManager﹕ Activity com.familiestvw.whatson.GetData泄漏了最初添加到此处的window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350 V.E…..R…D 0,0-1026288}
android.view.WindowLeaked:Activity com.familiestvw.whatson.GetData泄漏了最初添加到此处的window com.android.internal.policy.impl.PhoneWindow$DecorView{42de2350 V.E…..R…D 0,0-1026288}
在android.view.ViewRootImpl。(ViewRootImpl.java:450)
位于android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
在android.app.Dialog.show上(Dialog.java:287)
在com.familiestvw.whatson.GetData$ProgressTask.onPreExecute上(GetData.java:64)
位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
在android.os.AsyncTask.execute(AsyncTask.java:534)
在com.familiestvw.whatson.GetData.onCreate(GetData.java:45)上
位于android.app.Activity.performCreate(Activity.java:5372)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
在android.app.ActivityThread.access$700(ActivityThread.java:159)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:5419)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1187)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
在dalvik.system.NativeStart.main(本机方法)
这是我的密码:

public class GetData extends ListActivity {
private Context context;
private static String url = "http://localhost/android_connect/get_venues.php";

private static final String lblListing_ID = "Listing_ID";
private static final String lblEvent_ID = "Event_ID";
private static final String lblVenue_ID = "Venue_ID";
private static final String lblStart_Date = "Start_Date";
private static final String lblEnd_Date = "End_Date";
private static final String lblFrequency = "Frequency";

ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();

ListView lv ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_results);
    ProgressTask task = new ProgressTask();
    task.execute();
}


public class ProgressTask extends AsyncTask<String, Void, Boolean> {
    ProgressDialog dialog;

    protected void onPreExecute() {
        dialog= ProgressDialog.show(GetData.this, "Please Wait","Searching Database", true);
    }

    protected Boolean doInBackground(final String... args) {

        JSONParser jParser = new JSONParser();

        // get JSON data from URL
        JSONArray json = jParser.getJSONFromUrl(url);

        for (int i = 0; i < json.length(); i++) {

            try {
                JSONObject c = json.getJSONObject(i);
                String Listing_ID = c.getString(lblListing_ID);
                String Event_ID = c.getString(lblEvent_ID);
                String Venue_ID = c.getString(lblVenue_ID);
                String Start_Date = c.getString(lblStart_Date);
                String End_Date = c.getString(lblEnd_Date);
                String Frequency = c.getString(lblFrequency);

                HashMap<String, String> map = new HashMap<String, String>();

                // Add child node to HashMap key & value
                map.put(lblListing_ID, Listing_ID);
                map.put(lblEvent_ID, Event_ID);
                map.put(lblVenue_ID, Venue_ID);
                map.put(lblStart_Date, Start_Date);
                map.put(lblEnd_Date, End_Date);
                map.put(lblFrequency, Frequency);
                jsonlist.add(map);
            }
            catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(final Boolean success) {
            dialog.dismiss();
        ListAdapter adapter = new SimpleAdapter(context, jsonlist,
                R.layout.list_item, new String[] { lblListing_ID , lblEvent_ID,
                lblVenue_ID, lblStart_Date, lblEnd_Date, lblFrequency }, new int[] {
                R.id.Listing_ID, R.id.Event_ID, R.id.Venue_ID,
                R.id.Start_Date, R.id.End_Date, R.id.Frequency });

        setListAdapter(adapter);

        // select single ListView item
        lv = getListView();
    }


}
公共类GetData扩展ListActivity{
私人语境;
专用静态字符串url=”http://localhost/android_connect/get_venues.php";
私有静态最终字符串lblListing_ID=“Listing_ID”;
私有静态最终字符串lblEvent\u ID=“Event\u ID”;
专用静态最终字符串lblVenue\u ID=“场馆\u ID”;
私有静态最终字符串lblStart\u Date=“Start\u Date”;
私有静态最终字符串lblEnd\u Date=“End\u Date”;
专用静态最终字符串lblffrequency=“Frequency”;
ArrayList jsonlist=新的ArrayList();
ListView lv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u结果);
ProgressTask任务=新的ProgressTask();
task.execute();
}
公共类ProgressTask扩展了AsyncTask{
进程对话;
受保护的void onPreExecute(){
dialog=ProgressDialog.show(GetData.this,“请稍候”,“正在搜索数据库”,true);
}
受保护的布尔doInBackground(最终字符串…args){
JSONParser jParser=新的JSONParser();
//从URL获取JSON数据
JSONArray json=jParser.getJSONFromUrl(url);
for(int i=0;i
} 猜测问题可能在于取消对话,但似乎无法找到有效的解决方案


任何建议都将不胜感激>

您正在
onCreate
中创建进度对话框并立即显示它,但您的
活动
尚未通过
onResume
状态。我的建议是将进度对话框分离出来,由
活动启动
和have您的
AsyncTask
只需获取数据并对其进行处理。完成后,它的postExecute回调可以向UI线程上运行的处理程序发送一条消息以关闭对话框。还要注意的是
AsyncTask
不支持生命周期,因此当前方法可能会在Activi当异步任务仍在后台运行时,ty被暂停或销毁。