1

从一个活动我的应用程序将转到第二个活动(我在这里发送一些活动代码)。这个活动有一个地图视图。因为我的应用程序中有 2 个地图视图,所以我应该在此活动中使用“进程”属性。但是当我在午餐前使用此属性时,活动应用程序会显示黑屏几秒钟,然后会显示我的 ProgressDialog 和活动。我想让这个黑屏不出现

这是我的班级的定义:

    [Activity (Label = "PropertyShowActivity",
           Process =":PropertyShowMapActivity")]            
public class PropertyShowActivity : MapActivity
{.....}

这个活动的onCreate代码是:

protected override void OnCreate (Bundle bundle)
    {
        try {
            base.OnCreate  (bundle);

            RequestWindowFeature (WindowFeatures.NoTitle);
            PD = new ProgressDialog (this);
            PD.SetMessage ("Please Wait...");
            PD.Indeterminate = true;
            PD.SetCancelable (false);
            PD.Show ();
            currentproperty = new Property ();
            SetContentView (Resource.Layout.PropertyShow);
            mapLayout = FindViewById ,,,,<LinearLayout > (Resource .Id.PrptyLocationOnMapLayout);
            mapLayout .Visibility = ViewStates.Gone;



            if (RplSettings.Sitename == string.Empty) {
                RplSettings.LoadAllSettings (this);
            }
            action = Intent.GetStringExtra (AppConstants.Action);
            Pid = Intent.GetLongExtra ("Pid", 0);

            Common .MenuInitialize (this, "Property");
            Common .MenuEventInitialize (this);
            AssignBottomActionBarEvents ();

            FindElemnts ();

            if (Pid == 0)
                Pid = Intent.GetIntExtra ("Pid", 0);

            if (action == string.Empty) {
                PD.Hide ();
                Finish ();
            }
            if (action == AppConstants.DownloadProperty) {
                LoadPropertyData ();
            } else if (action == AppConstants.OfflineProperty) {
                OfflineProperty = true;
                //var path = Intent.GetStringExtra (AppConstants.PropertyFilePath);
                //currentproperty = IOAddOn.ParsePropertyJsonString (UTF8Encoding.UTF8.GetString (Property.LoadPropertyFromSD (path)));
                LoadPropertyData ();
            }


        } catch (Exception ex) {
            Common.HandleException (ex);
        }
    }

而且 ddms 的日志是:当我定义我的类时,如下所示,它工作正常:

[Activity (Label = "PropertyShowActivity")]         
public class PropertyShowActivity : MapActivity
{.....}
4

2 回答 2

0

添加Process属性时,您是在告诉 Android 操作系统在新进程中启动该活动。加载新进程可能需要一些时间,这就是出现黑屏的原因(将其视为启动新应用程序)。不幸的是,除了优化代码(见下文)之外,您无能为力避免这种情况。

看来您在OnCreate()覆盖中做了很多工作,例如加载设置等。您可能希望像这样在后台运行这些。

        Task.Factory.StartNew(()=>
            {
                // load settings here
                // do expensive non-ui work here

                RunOnUiThread(() =>
                    {
                        // do UI work here
                    });
            });
于 2012-11-18T00:53:19.967 回答
0

我解决了在同一进程中运行两个应用程序的问题。但是在进行第二个活动后,我将新应用程序的状态保存在应用程序的应用程序类中。然后当我在 OnResume 中支持第一个地图活动时,我将 mapview 的状态更改为过去的状态。它工作正常。

于 2012-11-22T05:27:47.003 回答