比较windows phone 的回退事件与android的回退事件

    public void onBackPressed() {

        finish();

    }

 

如果要做一个页面导航的功能的话,就我而言,认为,windows phone开发比android更加人性化,更加傻瓜化能够后退键保存相应的数据啊。

不是吗,windows phone 导航更加傻瓜,因为微软的api中直接有一个goback的方法,能够使你回到相应的后退界面,因为他航到 Back 堆栈中的最新条目。 如果 Back 堆栈中没有任何条目,则此方法将引发异常;在调用此方法前,始终都要检查 CanGoForward。 这是由于一个页面毡对相应的page进行了管理,自愿遵守先进后出的原理也很好管理。而android中activity本身也有一个栈对象对相应的activity进行了管理,自愿后退时候,也能够进行了后退。想法是很好的,但现实是残酷的。你看我们android程序员必须在onkey事件中对相应的事件进行监听,判断他按下是不是back键来回退按钮。 这里事件是activity必须要实现传递,来截获这个后退按下的事件。我这里重点要提出一个问题,onKeyDown事件究竟是一层层实现back事件的.android 就是比.net好啊!开源,看源代码。

需调用activity中的onKeyDown事件,他的源代码如何: 这是我们定义到了activity中的onKeyDown事件,他的源代码是这样子的:

  

if (keyCode == KeyEvent.KEYCODE_BACK) {

            if (getApplicationInfo().targetSdkVersion

                    >= Build.VERSION_CODES.ECLAIR) {

                event.startTracking();

            } else {

                onBackPressed();

            }

            return true;

        }

判断其目标版本是不是比本版本大的的话,就调用event.startTracking()方法,对event.startTracking()方法跟踪,发现他总是相隔了一段时间进行调用。

否则的话,就调用onbackPressed方法。这个方法又是个怎么鸟样。源代码如下:

    public void onBackPressed() {

        finish();

    }

他就调用 finish结束了当前的activity了,他的源代码又是这个鸟样:

    public void finish() {

        if (mParent == null) {

            int resultCode;

            Intent resultData;

            synchronized (this) {

                resultCode = mResultCode;

                resultData = mResultData;

            }

            if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken);

            try {

                if (ActivityManagerNative.getDefault()

                    .finishActivity(mToken, resultCode, resultData)) {

                    mFinished = true;

                }

            } catch (RemoteException e) {

                // Empty

            }

        } else {

            mParent.finishFromChild(this);

        }

    }

判断其父activity是不是有值的,有的话,就把当前数据保存起来,如果当前activity结束了,就通知dalvik虚拟机已经结束了当前activity,否则的父一级的activity来结束当前activity。

这就是back事件的实现,他的实现的流程图是这样的:

比较windows phone 的回退事件与android的回退事件

这就是我对back事件一点点了解。

好好学习天天向上。

 

 

 

 

 

 

你可能感兴趣的:(windows phone)