編輯:關於Android編程
activityA和B A跳轉到B
1:在主配置文件中添加Bactivity,如果不想B在橫豎屏切換的時候導致activity的銷毀和重新創建;可在聲明activity中添加
android:configChanges="keyboardHidden|orientation"
[html]
<!-- android:configChanges="keyboardHidden|orientation" 禁止activity在橫豎屏的時候activity被重新創建或者重啟,導致數據丟失,在游戲制作中尤為重要 -->
<activity
android:name=".DemoActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Dialog" />
<!-- android:theme="@android:style/Theme.Dialog" 設置該activity的顯示樣式是一對話框的形式顯示 -->
2:在A的配置文件中添加一個按鈕.和單擊事件
3:重寫A中父類的onCreate onDestroy onPause onRestart onResume onStart onStop 方法,並添加system.out的TAG
為了避免橫豎屏和以為一些異常導致activity的銷毀和數據丟失,就重寫onSaveInstanceState這個方法,該方法可以保存當前頁面因為異常導致的activity銷毀時候數據,然後在下載onCreate的時候調用這些數據就可以了,onCreate中的參數就是onSaveInstanceState方法的bundle對象
[java]
package com.example.lifecycle;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
/**
* 聲明周期: 一個對象被創建出來 到 被銷毀(或者垃圾回收)的這個過程中所必須的方法
*
* @author w
*
*/
public class MainActivity extends Activity {
/**
* A 激活下一個activity之前的頁面 B激活下一個activity之後的頁面<br>
* 程序第一次被部署的時候,執行第一個activity的onCreate onStart onResume 方法<br>
* 激活下一個activity 執行A的onPause B onCreate onStart onResume A的 onStop<br>
* 在B中點擊返回按鈕執行B的finidsh onPause A的 onRestart onStart onResume B的 onStop
* onDestroy<br>
* 在A中點擊返回 執行 A的 finish onPause onStop onDestroy <br>
* 在A中點擊home鍵 執行A的onPause onStop方法<br>
*/
@Override
/**
* activity第一次被創建的時候執行,可做一些初始化工作
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("main onCreate");
int page = 0;
if (savedInstanceState != null) {// savedInstanceState
// 接收因異常回收頁面傳來的bundle值
page = savedInstanceState.getInt("page");// 取得傳來的bundle中的值
}
System.out.println("當前: " + page);
}
/**
* click點擊事件
*/
public void click(View view) {
Intent intent = new Intent(this, DemoActivity.class);
startActivity(intent);
}
@Override
public void finish() {
super.finish();
System.out.println("main finish");
}
@Override
/**
* activity被銷毀的時候執行的方法
*/
protected void onDestroy() {
super.onDestroy();
System.out.println("main onDestroy");
}
@Override
/**
* 當界面失去焦點的時候
*/
protected void onPause() {
super.onPause();
System.out.println("main onPause");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("main onRestart");
}
@Override
/**
* 界面的控件可以獲取焦點的時候
*/
protected void onResume() {
super.onResume();
System.out.println("main onResume");
}
@Override
/**
* 當界面可以被用戶可見,當用戶再次返回該activity的時候,可以用這個方法來做一些數據的更新
*/
protected void onStart() {
super.onStart();
System.out.println("main onStart");
}
@Override
/**
* 界面用戶完全不可見的時候調用,比如正在看視屏,來一電話,可以用該方法停止播放
*/
protected void onStop() {
super.onStop();
System.out.println("main onStop");
}
@Override
/**
* 當activity被異常銷毀(回收)的時候調用,如果是自適應屏幕,
* 如果是一個閱讀器,在看的時候突然沒電了,就會調用這個方法,當下次調用者個頁面的時候,會調用onCreate方法,並把這個參數的bundle對象傳給oncreate方法,<br>
* oncreate方法中的bundle參數就是該值
*/
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putInt("page", 30);
}
}
4:Bactivity代碼
[java]
package com.example.lifecycle;
import android.app.Activity;
import android.os.Bundle;
public class DemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo);
System.out.println("demo onCreate");
}
@Override
public void finish() {
super.finish();
System.out.println("demo finish");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("demo onDestroy");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("demo onPause");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("demo onRestart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("demo onResume");
}
@Override
protected void onStart() {
super.onStart();
System.out.println("demo onStart");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("demo onStop");
}
}
注意onSaveInstanceState方法的作用,可以保存activity在因為異常導致銷毀時候的數據,然後傳給onCreate方法,在做處理,就可以避免數據的錯亂,
例如 在看小數的時候切換了橫豎屏,在切換的時候會調用onCreate onStart onResume 那麼activity中的當前頁數就丟了,用得從新開始,如果重寫了onSaveInstanceState方法,把當前頁放到參數bundle中,在onCreate的時候,onCreate中的參數bundle就是onSaveInstanceState方法放進的bundle
在聲明的activity中添加 android:configChanges="keyboardHidden|orientation" 屬性 可以禁止activity在橫豎屏的時候activity被重新創建或者重啟,導致數據丟失,在游戲制作中尤為重要
前言:最近做基於openfire聊天(仿QQ、微信)翻頁查看聊天記錄,為此做了根據時間倒序查看聊天記錄,先聲明這demo是根據id來倒序(原理和時間倒序一樣) 1,主界面
最常用快捷鍵 快捷鍵 用途描述 ctrl+k commit到版本控制軟件 ctrl+shift+K push到遠程倉庫 ctrl+T 拉取版本到本地
本文實例總結了 Android中Notification用法。分享給大家供大家參考,具體如下:我們在用手機的時候,如果來了短信,而我們沒有點擊查看的話,是不是在手機的最上
一、首先說明:藍牙通信必須用手機測試,因為avd裡沒有相關的硬件,會報錯!好了,看看最後的效果圖:二、概述:1.判斷是否支持BluetoothBluetoothAdapt