웹 서비스 소비를 처리하기 위해 비동기 작업을 사용하는 활동이 있지만 버튼을 클릭하거나 활동을 입력 할 때 오류가 발생합니다. ProgressDialog가 닫히지 않는 것 같습니다. 여기에 실종 됐어? 어떤 아이디어라도 도움이 될 것입니다!나를 미치게하는 WindowLeaked 오류
오류 로그 :
11-28 08:24:28.589: E/WindowManager(20301): android.view.WindowLeaked: Activity com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{45400170 G.E..... R.....ID 0,0-180,180} that was originally added here
11-28 08:24:28.589: E/WindowManager(20301): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:436)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:267)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.Dialog.show(Dialog.java:288)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.login.util.CustomProgressDialog.show(CustomProgressDialog.java:41)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity$asyncGetTaskClass.onPreExecute(TaskFactoryRateTasksActivity.java:84)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.AsyncTask.execute(AsyncTask.java:535)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity.onCreate(TaskFactoryRateTasksActivity.java:44)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.Activity.performCreate(Activity.java:5389)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2350)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread.access$800(ActivityThread.java:163)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1257)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.Handler.dispatchMessage(Handler.java:102)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.Looper.loop(Looper.java:157)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread.main(ActivityThread.java:5335)
11-28 08:24:28.589: E/WindowManager(20301): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 08:24:28.589: E/WindowManager(20301): at java.lang.reflect.Method.invoke(Method.java:515)
11-28 08:24:28.589: E/WindowManager(20301): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
11-28 08:24:28.589: E/WindowManager(20301): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
11-28 08:24:28.589: E/WindowManager(20301): at dalvik.system.NativeStart.main(Native Method)
11-28 08:24:28.589: E/WindowManager(20301): android.view.WindowLeaked: Activity com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{45428730 G.E..... R.....ID 0,0-180,180} that was originally added here
11-28 08:24:28.589: E/WindowManager(20301): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:436)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:267)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.Dialog.show(Dialog.java:288)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.login.util.CustomProgressDialog.show(CustomProgressDialog.java:41)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity$asyncRateClass.onPreExecute(TaskFactoryRateTasksActivity.java:156)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.AsyncTask.execute(AsyncTask.java:535)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity.asyncRateTask(TaskFactoryRateTasksActivity.java:64)
11-28 08:24:28.589: E/WindowManager(20301): at com.roneskinder.selfierush.activity.TaskFactoryRateTasksActivity$2.onClick(TaskFactoryRateTasksActivity.java:58)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.View.performClick(View.java:4630)
11-28 08:24:28.589: E/WindowManager(20301): at android.view.View$PerformClick.run(View.java:19339)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.Handler.handleCallback(Handler.java:733)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.Handler.dispatchMessage(Handler.java:95)
11-28 08:24:28.589: E/WindowManager(20301): at android.os.Looper.loop(Looper.java:157)
11-28 08:24:28.589: E/WindowManager(20301): at android.app.ActivityThread.main(ActivityThread.java:5335)
11-28 08:24:28.589: E/WindowManager(20301): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 08:24:28.589: E/WindowManager(20301): at java.lang.reflect.Method.invoke(Method.java:515)
11-28 08:24:28.589: E/WindowManager(20301): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
11-28 08:24:28.589: E/WindowManager(20301): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
11-28 08:24:28.589: E/WindowManager(20301): at dalvik.system.NativeStart.main(Native Method)
활동 :
package com.roneskinder.selfierush.activity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.roneskinder.selfierush.login.R;
import com.roneskinder.selfierush.login.util.CustomProgressDialog;
import com.roneskinder.selfierush.login.util.UserFunctions;
public class TaskFactoryRateTasksActivity extends Activity {
public static final String TAG_GETTASK = "getRateTask";
public static final String TAG_RATETASK = "RateTask";
protected TextView taskDescription, taskDescriptionExtra, taskScore;
protected Button btn_like, btn_dislike;
public String idtask, description, description_extra, score, rate, message, response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.task_factory_ratetask_layout);
taskDescription = (TextView) findViewById(R.id.taskDescription);
taskDescriptionExtra = (TextView) findViewById(R.id.taskDescriptionExtra);
taskScore = (TextView) findViewById(R.id.taskScore);
btn_like = (Button) findViewById(R.id.btn_like);
btn_dislike = (Button) findViewById(R.id.btn_dislike);
new asyncGetTaskClass(this).execute();
// Like
btn_like.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
rate = "1";
asyncRateTask(v);
}
});
// Like
btn_dislike.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
rate = "0";
asyncRateTask(v);
}
});
}
public void asyncRateTask(View v) {
new asyncRateClass(this).execute();
}
public void setTextViews(){
taskDescription.setText(description);
taskDescriptionExtra.setText(description_extra);
taskScore.setText(score);
}
class asyncGetTaskClass extends AsyncTask<Void, Void, Void> {
private final ProgressDialog progressDialog;
public asyncGetTaskClass(Context ctx) {
progressDialog = CustomProgressDialog.ctor(ctx);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// sleep for 5 seconds
UserFunctions userFunction = new UserFunctions();
JSONObject json = userFunction.getRateTask();
try {
// news found
// Getting Array of News
JSONArray emailLogin = json.getJSONArray(TAG_GETTASK);
// Log.d("JSON", "NEWS: " + news);
if (emailLogin != null) {
// looping through All News
for (int i = 0; i < emailLogin.length(); i++) {
JSONObject c = emailLogin.getJSONObject(i);
// Storing each json item in variable
idtask = c.getString("idtask");
description = c.getString("description");
description_extra = c.getString("description_extra");
score = c.getString("score");
Log.d("TASK INFO", "Task:" + idtask + "\ndescription:" + description + "\ndescription_extra:" + idtask + "\nscore:" + score);
}
} else {
// Check your log cat for JSON reponse
Log.d("Login empty: ", json.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
try {
if (null != progressDialog && progressDialog.isShowing()) {
progressDialog.hide();
}
setTextViews();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class asyncRateClass extends AsyncTask<Void, Void, Void> {
private final ProgressDialog progressDialog;
public asyncRateClass(Context ctx) {
progressDialog = CustomProgressDialog.ctor(ctx);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// sleep for 5 seconds
UserFunctions userFunction = new UserFunctions();
JSONObject json = userFunction.RateTask(rate, idtask);
try {
// news found
// Getting Array of News
JSONArray emailLogin = json.getJSONArray(TAG_RATETASK);
// Log.d("JSON", "NEWS: " + news);
if (emailLogin != null) {
// looping through All News
for (int i = 0; i < emailLogin.length(); i++) {
JSONObject c = emailLogin.getJSONObject(i);
// Storing each json item in variable
response = c.getString("response");
message = c.getString("message");
Log.d("TASK INFO", "response:" + response + "\nmessage:" + message);
}
} else {
// Check your log cat for JSON reponse
Log.d("Login empty: ", json.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
try {
if (null != progressDialog && progressDialog.isShowing()) {
progressDialog.hide();
}
if(response.equals("1")){
Intent intent = new Intent(getBaseContext(), TaskFactoryMenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("response", "2");
startActivity(intent);
}
else{
Intent intent = new Intent(getBaseContext(), TaskFactoryMenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("response", "3");
startActivity(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
CustomProgressDialog 클래스 게시 – k0sh