AsyncTask的进度对话框-Android问题(无法添加窗口--令牌null不适用于应用程序)

AsyncTask的进度对话框-Android问题(无法添加窗口--令牌null不适用于应用程序),android,Android,我有一个错误: android.view.WindowManager$BadTokenException:无法添加 窗口-标记null不适用于应用程序 谁能告诉我哪里做错了。 提前感谢因此,服务不是您必须使用observer模式的UI。您的活动必须在服务中注册一个侦听器,以便服务可以通知活动有关开始加载或完成加载等特殊事件。尝试添加以下行:if dialog=null&&dialog.isShowing{dialog.disease;}到活动中的onPause{}方法,或在开始下一个活动之前关闭

我有一个错误:

android.view.WindowManager$BadTokenException:无法添加 窗口-标记null不适用于应用程序

谁能告诉我哪里做错了。
提前感谢

因此,服务不是您必须使用observer模式的UI。您的活动必须在服务中注册一个侦听器,以便服务可以通知活动有关开始加载或完成加载等特殊事件。

尝试添加以下行:if dialog=null&&dialog.isShowing{dialog.disease;}到活动中的onPause{}方法,或在开始下一个活动之前关闭对话框。您好,您无法访问服务类中的UI元素,因为该服务是后台进程。您可以在活动中使用AsyncTask来显示“登录进度”对话框。我以前在另一个程序中使用过AsyncTask,但在该代码中没有使用。我使用过AsyncTask,但面临相同的问题…我认为错误显示在alertdialog.show中;
public class ServiceLogin extends Service {

    public static boolean startService = false;

    UserHelper userHelper;

    @Override
    public void onCreate() {
        Log.e("Service", "=============Created");
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
            userHelper=new UserHelper(this);
        }
        startService = true;
    }

    @Override
    public IBinder onBind(Intent intent) {
        Log.e("Service", "=============onBind");
        return null;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e("Service", "=============Destroy");
        //startService = false;
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.e("Service", "=============Unbind");
        return super.onUnbind(intent);
    }

    @Override
    public void onStart(Intent intent, int startId) {
        System.out.println("Service is running outside method");
        if (startService == true) {
            System.out.println("Service is running");
            SendData login= new SendData(this);
            login.execute();
        }
    }
    private class SendData extends AsyncTask<Void, Void, Void> {
        String responsefromserver = null;
        String loginemail=null;
        String loginpassword=null;
        private ProgressDialog dialog;
        public SendData(ServiceLogin login) {
            dialog = new ProgressDialog(login);
        }

        protected void onPreExecute() {

                dialog.setMessage("Login, please wait...");
                dialog.show();

        }

        protected Void doInBackground(Void... params) {
            loginemail= AmrMethods.getDefaults("loginemail", ServiceLogin.this);
            loginpassword=AmrMethods.getDefaults("loginpassword", ServiceLogin.this);

            try {
                JSONArray ja1 = new JSONArray();
                JSONObject jsonarray = new JSONObject();

                jsonarray.put("user_email", loginemail);
                jsonarray.put("user_password", loginpassword);

                ja1.put(jsonarray);
                SendRequestLogin req = new SendRequestLogin();
                responsefromserver = req.sendRequsetBackground("userLoginAndroid", ja1);
                try {
                    String user_id,first_name,last_name,password,email,phone_no;

                    JSONObject obj = new JSONObject(responsefromserver);
                    System.out.println("++++++++++++++++++++"+obj);
                    user_id=obj.getString("user_id");
                    first_name=obj.getString("first_name");
                    last_name=obj.getString("last_name");
                    password=obj.getString("password");
                    email=obj.getString("email");
                    phone_no=obj.getString("phone_no");
                    AmrMethods.setDefaults("user_id",user_id,getApplicationContext());

                    userHelper.saveLocation(user_id, first_name, last_name, password, email,phone_no);
                }
                catch(Exception e){
                    e.printStackTrace();
                }

            } catch (Exception e) {
                e.printStackTrace();
            }


            return null;
        }

        protected void onPostExecute(Void unused) {
            System.out.println(responsefromserver + "==============Response");
            if (responsefromserver == null) {
                Toast.makeText(getApplicationContext(), "Check your Internet Connection or something went wrong",
                        Toast.LENGTH_SHORT).show();
            }else if(responsefromserver.equals("FAILURE")){
                Toast.makeText(getApplicationContext(), "Data Not Send",
                        Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(getApplicationContext(), "Login Success Fully",
                        Toast.LENGTH_SHORT).show();
                //userid=responsefromserver;
                //AmrMethods.setDefaults("userid",userid, ServiceLogin.this);
                Intent i = new Intent(getApplicationContext(), Home.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(i);
            }
            if (dialog.isShowing()) {
                dialog.dismiss();
            }

        }
    }

}