在android中的Async doinbackground里面显示警报

时间:2010-11-02 05:13:22

标签: android

在我的Android应用程序中,我使用的是加载屏幕,由Async任务处理。在此任务的后台,我想在服务器中存在升级版本时显示警报。 如果有任何方法可以在android中完成,请你告诉我。

代码是

  

public class Task扩展了AsyncTask {

    // can use UI thread here
    protected void onPreExecute() {
        // this.dialog.setMessage("Loading...");
        prgbar.setVisibility(View.VISIBLE);
        // this.dialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
                final UpGradation upgrade=(UpGradation) ParserServiceImpl.getUpgrade(); //check this method name correctly.
                if(upgrade != null)
                {

                    try {
                        pInfo = getPackageManager().getPackageInfo("com.docomo.aptv", PackageManager.GET_META_DATA);
                        String temp = pInfo.versionName;
                       int pversion= pInfo.versionCode;
                       int upversion=Integer.parseInt(upgrade.getVersion());
                       Log.i("VALUE RETURNED",""+pversion);
                        Log.i("jayantha","version name"+pInfo.versionName);
                        Log.i("jayanth","version code"+pInfo.versionCode);

                       if(pversion!=upversion)
                        {

                            final AlertDialog alert = new AlertDialog.Builder(context).create();
                            alert.setTitle("Updates");
                            alert.setMessage("An updated version of the application is present.Do you wish to download.");

                             alert.setButton("OK", new DialogInterface.OnClickListener() {
                                      public void onClick(DialogInterface dialog, int which) {

                                    alert.dismiss();
                                        Intent i = new Intent(Intent.ACTION_VIEW); 
                                        i.setData(Uri.parse(upgrade.getURL().trim())); 
                                        startActivity(i); 
                                        finish();

                                   } }); 
                             alert.setButton2("Cancel",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                                return;
                                            }
                                        });

                            alert.setIcon(R.drawable.application_icon_50x50);
                            alert.setCancelable(false);
                            alert.show();


                           }
                      } 


                     catch (NameNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }

请转发您的建议。

提前致谢:)

2 个答案:

答案 0 :(得分:2)

您无法向doInBackground()方法显示警报和对话框。我们使用postProgress()并在onProgressUpdate()中执行它,或者等待afterExecuted()从主UI线程执行这些操作。

答案 1 :(得分:0)

在显示提醒之前,您有finish()当前活动。并且你已导航到另一个活动......这就是问题所在。

检查此代码段。在显示警报之前出现。

Intent i = new Intent(Intent.ACTION_VIEW); 
i.setData(Uri.parse(upgrade.getURL().trim())); 
startActivity(i); 
finish();