日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

16_Android生命周期再介绍,通过androidconfigChanges属性让界面旋转时不改变状态中保留的值

發(fā)布時間:2024/9/27 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16_Android生命周期再介绍,通过androidconfigChanges属性让界面旋转时不改变状态中保留的值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


A? android:configChanges屬性

android:configChanges屬性,一般認為有以下幾點:

1 不設(shè)置Activityandroid:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次。

2 設(shè)置Activityandroid:configChanges="orientation"時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次

3、設(shè)置Activityandroid:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法。

4 但是,自從Android 3.2API 13),在設(shè)置Activityandroid:configChanges="orientation|keyboardHidden"后,還是一樣 會重新調(diào)用各個生命周期的。因為screen size也開始跟著設(shè)備的橫豎切換而改變。所以,在AndroidManifest.xml里設(shè)置的MiniSdkVersion TargetSdkVersion屬性大于等于13的情況下,如果你想阻止程序在運行時重新加載Activity,除了設(shè)置"orientation" 你還必須設(shè)置"ScreenSize"

解決辦法:

??? AndroidManifest.xml中設(shè)置android:configChanges="orientation|screenSize“

B ActivityConfigChanges屬性

官方解釋:通過設(shè)置這個屬性可以使Activity捕捉設(shè)備狀態(tài)變化,以下是可以被識別的內(nèi)容:

CONFIG_FONT_SCALE
CONFIG_MCC
CONFIG_MNC
CONFIG_LOCALE
CONFIG_TOUCHSCREEN
CONFIG_KEYBOARD
CONFIG_NAVIGATION
CONFIG_ORIENTATION

設(shè)置方法:將下列字段用”local|navigation|orientation”

mcc:移動國家號碼,由三位數(shù)字組成,每個國家都有自己獨立的MCC,可以識別手機用戶所屬國家。

mnc:移動網(wǎng)號,在一個國家或者地區(qū)中,用于區(qū)分手機用戶的服務(wù)商。

locale:用戶所在地區(qū)發(fā)生變化。

touchscreen:The touchscreen has changed. (This should never normally happen.)

keyboard:鍵盤模式發(fā)生變化,例如:用戶接入外部鍵盤輸入

keyboardHidden:用戶打開手機硬件鍵盤。

navigation: The navigation type has changed. (This should never normally happen.)

orientation:設(shè)備旋轉(zhuǎn),橫向顯示和豎向顯示模式切換。

fontScale:全局字體大小縮放發(fā)生改變。

C 通過設(shè)置android:configChanges查看activity的生命周期的變化,看打印情況。

?

1 編寫如下Android應(yīng)用程序:

2 編寫Android清單文件如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

??? package="com.itheima.kof97"

??? android:versionCode="1"

??? android:versionName="1.0" >

?

??? <uses-sdk

??????? android:minSdkVersion="8"

??????? android:targetSdkVersion="19" />

?

??? <application

??????? android:allowBackup="true"

??????? android:icon="@drawable/ic_launcher"

??????? android:label="@string/app_name"

??????? android:theme="@style/AppTheme" >

??????? <activity

??????????? android:name="com.itheima.kof97.MainActivity"

??????????? android:label="@string/app_name" >

??????????? <intent-filter>

??????????????? <action android:name="android.intent.action.MAIN" />

?

??????????????? <category android:name="android.intent.category.LAUNCHER" />

??????????? </intent-filter>

??????? </activity>

??? </application>

?

</manifest>

2 編寫布局文件activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

??? xmlns:tools="http://schemas.android.com/tools"

??? android:layout_width="match_parent"

??? android:layout_height="match_parent"

??? tools:context=".MainActivity" >

?

??? <Button

??????? android:layout_centerHorizontal="true"

??????? android:layout_width="wrap_content"

??????? android:layout_height="wrap_content"

??????? android:onClick="click"

??????? android:text="重拳"/>

???

??? <TextView

??????? android:id="@+id/tv_blood"

??????? android:layout_width="wrap_content"

??????? android:layout_height="wrap_content"

??????? android:layout_centerHorizontal="true"

??????? android:layout_centerVertical="true"

??????? android:text="100"/>

???

</RelativeLayout>

3 編寫Activity,代碼如下:

package com.itheima.kof97;

?

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

?

/**

?* 默認情況下橫豎屏切換activity會銷毀然后重新創(chuàng)建

?* @author toto

?*/

public class MainActivity extends Activity {

???????? private TextView tv_blood;

???????? private int blood = 100;

????????

???????? private static String TAG = "android:Config";

????????

???????? @Override

???????? protected void onCreate(Bundle savedInstanceState) {

?????????????????? super.onCreate(savedInstanceState);

?????????????????? Log.i(TAG, "onCreate");

?????????????????? setContentView(R.layout.activity_main);

?????????????????? tv_blood = (TextView) findViewById(R.id.tv_blood);

???????? }

?

???????? public void click(View view) {

?????????????????? blood--;

?????????????????? tv_blood.setText("對方的生命值:" + blood);

?????????????????? if (blood < 0) {

??????????????????????????? Toast.makeText(this, "K.O.!", 1).show();

?????????????????? }

???????? }

????????

???????? //被銷毀的時候調(diào)用的方法

???????? @Override

???????? protected void onDestroy() {

?????????????????? Log.i(TAG, "onDestroy");

?????????????????? super.onDestroy();

???????? }

????????

???????? //當(dāng)activity界面用戶可見的時候調(diào)用的方法

???????? @Override

???????? protected void onStart() {

?????????????????? Log.i(TAG, "onStart");

?????????????????? super.onStart();

???????? }

????????

???????? protected void onRestart() {

?????????????????? Log.i(TAG, "onRestart");

?????????????????? super.onRestart();

???????? }

????????

???????? //當(dāng)activity界面用戶不可見的時候調(diào)用的方法

???????? protected void onStop() {

?????????????????? Log.i(TAG, "onStop");

?????????????????? super.onStop();

???????? }

????????

???????? //界面開始獲取到焦點對應(yīng)的方法。 (界面按鈕可以被點擊,文本框可以輸入內(nèi)容)

???????? protected void onResume() {

?????????????????? Log.i(TAG, "onResume");

?????????????????? super.onResume();

???????? }

????????

???????? //界面失去焦點對應(yīng)的方法(暫停)(按鈕不可被點擊,文本框不可輸入內(nèi)容,但是界面用戶仍然能看見)

???????? protected void onPause() {

?????????????????? Log.i(TAG, "onPause");

?????????????????? super.onPause();

???????? }

}

Android的生命周期圖:

當(dāng)activity不加android:configChanges="orientation|keyboardHidden|screenSize"的測試結(jié)果:

1):啟動時輸出:

說明:

A:onCreate:創(chuàng)建activity

B:onStart:當(dāng)activity界面用戶可見的時候調(diào)用的方法。

C:onResume:界面開始獲取焦點對應(yīng)的方法。(界面按鈕可以被點擊,文本框可以輸入內(nèi)容)。

2:按返回箭頭按鈕直到不可見,調(diào)用的方法有:

說明:

AonPause界面失去焦點對應(yīng)的方法(暫停)(按鈕不可被點擊,文本框不可輸入內(nèi)容,但是界面用戶仍然能看見)。

B:onStop:當(dāng)activity界面用戶不可見的時候調(diào)用的方法。

C:onDestory:被銷毀的時候調(diào)用的方法。

3):按小房子的按鈕讓界面從可見到不可見的過程:

說明:

這個過程只是讓界面失去焦點,不可見,沒有銷毀activity

4):在(3)的基礎(chǔ)上,再次點擊應(yīng)用程序打開打開界面過程,執(zhí)行的操作如下:

說明:

onRestart:當(dāng)activity沒有死的時候會直接調(diào)用這個方法。

onStart:activity可見。

onResume:獲取到焦點。

?

?

點擊重拳:

開始界面顯示:

當(dāng)手機旋轉(zhuǎn)之后的效果如下:

現(xiàn)象:值又變成最開始的值了,也就是說沒有保存上一個界面狀態(tài)中的值。

?

4、修改AndroidManifest.xml文件,添加android:configChanges="orientation|keyboardHidden|screenSize"。后的效果如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

??? package="com.itheima.kof97"

??? android:versionCode="1"

??? android:versionName="1.0" >

?

??? <uses-sdk

??????? android:minSdkVersion="8"

??????? android:targetSdkVersion="19" />

?

??? <application

??????? android:allowBackup="true"

??????? android:icon="@drawable/ic_launcher"

??????? android:label="@string/app_name"

??????? android:theme="@style/AppTheme" >

??????? <activity

??????????? android:configChanges="orientation|keyboardHidden|screenSize"

??????????? android:name="com.itheima.kof97.MainActivity"

??????????? android:label="@string/app_name" >

??????????? <intent-filter>

??????????????? <action android:name="android.intent.action.MAIN" />

?

??????????????? <category android:name="android.intent.category.LAUNCHER" />

??????????? </intent-filter>

??????? </activity>

??? </application>

?

</manifest>

運行程序,開始界面如下:

手機屏幕旋轉(zhuǎn)之后的界面

這個現(xiàn)象說明,沒有加android:configChanges="orientation|keyboardHidden|screenSize"時屏幕旋轉(zhuǎn)會改變原有的參數(shù)的值,如果加了,屏幕狀態(tài)中保存的值不會隨著界面旋轉(zhuǎn)而改變。

?

總結(jié)

以上是生活随笔為你收集整理的16_Android生命周期再介绍,通过androidconfigChanges属性让界面旋转时不改变状态中保留的值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩aⅴ片 | 91av导航| 国产成人综合在线 | 91视频色 | 成人福利在线看 | 成片免费观看视频大全 | 中国黄色一级片 | 久久青娱乐 | 重口变态虐黄网站 | 久久国内视频 | 色激情五月 | 免费h片网站 | 国产一区二区三区免费看 | 天天综合天天综合 | 久久撸视频 | 大香蕉视频一区二区 | 中文字幕一区二区三区四区五区 | 最新视频 - 8mav | 男女午夜啪啪 | 黄色高清网站 | 欧美精品一二三区 | 美日韩成人| 激情欧美一区二区三区精品 | 一二区在线视频 | 精品黑人一区二区三区观看时间 | 国产aⅴ激情无码久久久无码 | 亚洲无圣光 | 97超碰免费在线 | 国产综合色视频 | 国产精品超碰 | 国产乱码一区二区三区在线观看 | 国产高清在线精品 | 欧日韩一区二区三区 | 国产免费一区二区三区 | 亚洲一区二区偷拍 | 午夜桃色 | 美女流白浆视频 | 黄色一级网 | 中国成人av| 毛片视频软件 | 久久国产精品波多野结衣 | 国产精品九九热 | 国产91久久精品一区二区 | 18岁成年人网站 | 欧美精品日韩少妇 | 国产精品天天av精麻传媒 | 久久极品 | 欧美黄色一级片视频 | 久久三级视频 | 夜夜骑av| 极品少妇一区 | 在线看片亚洲 | 极品人妻一区二区 | 又大又粗弄得我出好多水 | 国产黄色片免费观看 | 午夜国产福利在线 | 狠狠地日| 国产精品suv一区二区88 | 国产精品成人久久久久久久 | 国产精品免费电影 | 爱情岛论坛亚洲入口 | 亚洲人成人无码网www国产 | www.奇米.com | 国产欧美日韩三级 | 91国在线视频 | 欧洲久久久 | 一女被多男玩喷潮视频 | 欧美97| 男人操女人免费网站 | 国产在线观看无码免费视频 | 日韩v欧美 | 欧美韩日| 国产三级精品三级在线 | 欧美午夜精品理论片a级按摩 | 欧美性视频播放 | 中文字幕av一区二区三区谷原希美 | 欧美黑人孕妇孕交 | 欧美韩国日本一区 | 久草久热 | 最新视频在线观看 | 综合久久久久久 | 日韩欧美在线播放 | 99热精品在线 | 久久久久亚洲AV成人网人人小说 | 日韩av一区二区三区四区 | 69视频免费看 | 国产女人18水真多毛片18精品 | 日韩大片在线观看 | www.操操操| 日韩免费网站 | 欧美视频一区二区三区四区在线观看 | 狠狠做深爱婷婷综合一区 | 丝袜熟女一区二区 | 亚洲精品乱码久久 | 在线观看成人动漫 | 欧美日韩一级大片 | 天堂中文8| 久久在线观看 | 亚洲人人人 |