Activity生命周期 横竖屏切换

一、Activity生命周期

onCraeate Activity对象初始化创建         (加载布局文件    初始化控件)

onStart                 开始        界面可见        但是不可以交互

onResume          继续          界面可见        也可以交互

onPause            暂停            界面可见        不可以交互

onStop                停止        界面不可见

onDestory           销毁        对象销毁

二、Activity横竖屏切换

默认的情况下会结束之前的Activity生命周期,然后重写创建一个新的Activity

解决方法:

1、定义当前的Activity为竖屏或者横屏

android:screenOrientation="portrait"    指定为竖屏

2、可以横竖屏切换  但是Activity不会被销毁重新创建

android:configChanges="keyboard|orientation|screenSize"(键盘|方向|屏幕尺寸)




package com.qf.day06_intent01;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // 显示调用
  

 public void click1(View view) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        // intent.setClass(Context packageContext, Class cls)
        startActivity(intent);
    }

    // 隐式调用
    public void click2(View view) {
        Intent intent = new Intent();
        // String packageName String className
        // "com.qf.day06_intent01" 清单文件中
        // "com.qf.day06_intent01.SecondActivity" 类的位置
        // 第一种写法
        // 调用自己项目下的Activity

 // intent.setClassName("com.qf.day06_intent01",
        // "com.qf.day06_intent01.SecondActivity");

        // 调用其他项目下的Activity

  // intent.setClassName("com.qf.day06_activityhit",
        // "com.qf.day06_activityhit.MainActivity");

        // 调用手机图库的Activity

 intent.setClassName("com.android.gallery",
                "com.android.camera.GalleryPicker");

        // 第二个写法

   /*
         * ComponentName component = new ComponentName("com.qf.day06_intent01",
         * "com.qf.day06_intent01.SecondActivity");
         * intent.setComponent(component);
         */
        startActivity(intent);
    }

    // Action属性调用
    

public void click3(View view) {
        Intent intent = new Intent();
        // 设置当前意图的动作
        // 调用当前项目自定义的action
        // intent.setAction("haha");
        // 调用其他项目自定义的action
        intent.setAction("play");
        // 调用系统中定义的Action
        // 系统拨号盘
        // intent.setAction(Intent.ACTION_DIAL);
        startActivity(intent);
    }

    // data属性调用
  

 public void click4(View view) {
        Intent intent = new Intent();
        // 调用拨号
        /*
         * intent.setAction(Intent.ACTION_CALL); //Uri下parse可以讲字符串转化成Uri对象
         * intent.setData(Uri.parse("tel:10086"));
         */
  // 调用系统的浏览器
        /*
         * intent.setAction(Intent.ACTION_VIEW);
         * intent.setData(Uri.parse("http://www.baidu.com"));
         */
        startActivity(intent);
    }

    // data属性和type属性共同调用
  

 public void click5(View view) {
        // 播放音频
        Intent intent = new Intent();
        // 设置动作
        intent.setAction(Intent.ACTION_VIEW);
        // 设置数据和type类型
        intent.setDataAndType(Uri.parse("file:///sdcard/wuhuan.mp3"), "audio/*");
        // 如果同时设置data和type
           // 必须使用setDataAndType这个方法
        startActivity(intent);
    }

    // 利用extra属性发送短信
  

 public void click6(View view) {
        // 播放音频
        Intent intent = new Intent();
        // 设置动作
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("smsto:10086"));
        // 发送短信的内容的key值 sms_body
        intent.putExtra("sms_body", "给我冲100块钱话费");
        startActivity(intent);
    }

    // SmsManager后台发送短信
 

   public void click7(View view) {
        SmsManager manager = SmsManager.getDefault();
        manager.sendTextMessage("10086", null, "再给我冲100块钱话费", null, null);
    }
 public final void sendTextMessage(
            String destinationAddress, String scAddress, String text,
            PendingIntent sentIntent, PendingIntent deliveryIntent) {
        mSmsMgrProxy.sendTextMessage(destinationAddress, scAddress, text,
                sentIntent, deliveryIntent);
1)、destinationAddress——消息的目标地址 
2)、scAddress——服务中心的地址or为空使用当前默认的SMSC 3)destinationPort——消息的目标端口号 
4)、data——消息的主体,即消息要发送的数据 
    5)、sentIntent——
    如果不为空,当消息成功发送或失败这个PendingIntent就广播。结果代码是Activity.RESULT_OK表示成功,或
    RESULT_ERROR_GENERIC_FAILURE、RESULT_ERROR_RADIO_OFF、RESULT_ERROR_NULL_PDU之一表示错误。
    对应RESULT_ERROR_GENERIC_FAILURE,sentIntent可能包括额外的“错误代码”包含一个无线电广播技术特定的值,
    通常只在修复故障时有用。 每一个基于SMS的应用程序控制检测sentIntent。如果sentIntent是空,
    调用者将检测所有未知的应用程序,这将导致在检测的时候发送较小数量的SMS。 
6)、deliveryIntent——如果不为空,当消息成功传送到接收者这个PendingIntent就广播。

    }    //使用Flag设置activity的启动模式
  

 public void click8(View view) {
             Intent intent = new Intent(MainActivity.this,MainActivity.class);
             //动态的方式 设置要启动的MainActivity为什么样的启动模式
             intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
             startActivity(intent);
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        System.out.println(  " onNewIntent " );
    }
    
    
}


你可能感兴趣的:(Activity生命周期 横竖屏切换)