文档章节

Activity生命周期 横竖屏切换

火文乐武
 火文乐武
发布于 2016/04/25 19:33
字数 905
阅读 9
收藏 1

一、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 " );
    }
    
    
}


© 著作权归作者所有

火文乐武
粉丝 7
博文 38
码字总数 17183
作品 0
郑州
Android工程师
私信 提问
Android杂谈--layout的横竖屏处理

  横竖屏处理是开发应用是比较基础的一个要点,几乎都会用到。网上有一大堆的横竖屏切换的文章,但是翻了n页以后发现竟然清一色的是转载,所以不想浪费时间到这个上面,还是自己根据自己的...

尼莫
2012/10/11
413
0
关于Android横竖屏的设置和使用

Android可以支持横屏和竖屏,很多面试题都问Android横竖屏切换时Activity的生命周期。网上对于这个的解释算是相当详尽了。今天遇到的问题是Android应用程序中设置横竖屏的一些问题: 1.如果要...

Drealin
2012/08/17
1K
0
Activity的创建、生命周期

Activity是Android四大组件之一。一个Activity负责管理一个界面。 创建一个Activity: New -> Activity -> 选择要创建的Activity类型(一般我们选Basic Activity) AS会自动在AndroidManife...

chenhongyong
05/16
0
0
浅析:横竖屏切换时候Activity的生命周期

曾经遇到过一个面试题,让你写出横屏切换竖屏Activity的生命周期。现在给大家分析一下他切换时具体的生命周期是怎么样的: 1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,...

红豆与绿豆
2015/11/09
39
0
Android游戏开发之横竖屏的切换

玩过Android手机的同学们应该都很清楚手机横竖屏的机制吧,大部分游戏都是无法横竖屏切换的, 有的游戏只能竖屏的玩,有的游戏只能横屏玩,为什么开发中要强制游戏为单一的屏幕呢?原因很简单...

鉴客
2011/10/01
433
1

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
38分钟前
7
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
49分钟前
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
49分钟前
4
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
55分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
55分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部