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