您的位置:首页 > 产品设计 > UI/UE

Activity生命周期交互设计思想和应用场景(附源码)

2015-08-02 15:31 639 查看
Activity生命周期交互设计思想

1.在多个Activity进行交互的时候,为什么要先暂停(onPause()方法)当前的Activity,执行新的Activity的onCreate()方法,onStart()方法,onResume()方法?

答:比如当你正在一个页面(Activity)上看视频,此时,页面正处于onResume()方法。正在这个时候,突然来了一个电话。此时Android的处理是:首先把第一个视频的页面暂停(onPause()方法),然后再执行第二个页面的onCreate()方法,onStart()方法,onRsume()方法。当第二个页面获得焦点(onResume()方法)的时候,新的页面成功开启的时候,才停止(onStop()方法)第一个页面。如果在新打开的页面onCreate()方法执行之前,就停止(onStop()方法)的话,如果第二个页面由于其它原因开启失败,那就会出现黑屏状态。

2.Activity横竖屏切换:

首先Activity先执行一个生命周期的函数,然后再重新创建一个新的Activity。

以下是Android在横竖屏切换的时候调用的方法:保存信息在参数中。

/**
     * 保存信息到参数中
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        /**
         * 保存信息
         */
        outState.putString("key", "value");
    }

     /**
     * 参数中取出保存的信息
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 取出保存的信息
         */
        if (savedInstanceState != null) {

            String value = savedInstanceState.getString("key");

        }

    }


3.Android生命周期应用场景:

(1).onDestory()方法:释放掉与Activity相关的一些属性,为了防止内存泄漏,在优化等方面很重要。

(2).Activity启动的方式:

A:显示启动方式:直接通过类名来启动。

Intent intent = new Intent(MainActivity.this,SecondActiivty.class);
startActivity(intent);


B.隐式启动方式:通过设置Action属性标签和种类标签。应用于启动不知类名的Activity。例如启动系统的类名。不是启动本应用程序的Activity。如下启动系统常见的Activity:

(1).启动系统的浏览器:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.parse("https://www.baidu.com/");
intent.setData(uri);
startActivity(intent);


(2).启动相册:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,0);


(3).发送短信:

Uri uri = Uri.parse("smsto:13607567010");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "The SMS text");
startActivity(intent);
<uses-permission android:name="android.permission.SEND_SMS" />


(4).启动电话界面:

Uri uri = Uri.parse("tel:13607567010");
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
<uses-permission android:name="android.permission.CALL_PHONE" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: