今天抽了一天的时间来探讨Activity的学习内容(这里的话会有入门篇,中级篇,以及高级篇),学了Java2EE的孩子们应该知道里面有个servlet,其实activity也是类似的一个东西。废话不多说了,请看大屏幕,精彩都在后面。
本文涉及的参考博客地址:http://www.cnblogs.com/liuning8023/p/3771382.html
1、Activity 状态
当位于屏幕前台时(位于当前任务堆栈的顶部),它是活动或运行状态,也就是系统调用onStart()到OnStop()之前这一段时间。2、Paused状态
当它失去焦点但仍然对用户可见时,它处于暂停状态就是系统调用onCreate()之后到onStop()之前这段时间。即是:在它之上有另外一个activity。这个activity也许是透明的,或者未能完全遮蔽全屏,所以被暂停的activity仍对用户可见。暂停的activity仍然是存活的(它保留着所有的状态和成员信息并保持着到window
manager的连接),但当系统处于极低内存的情况下,仍然可以杀死这个activity。3、Stopped状态
如果它完全被另一个activity覆盖是,它处于停止状态也就是系统调用onStop()之后到onDestory之前这一段时间。它仍然保留所有的状态和成员信息。然而,它不在为用户可见,所以它的窗口将被隐藏,如果其它地方需要内存,则系统常常会杀死这个activity。
一、onCreate() 在activity生命周期开始时被调用,一般在这里对整个activity经行初始化和布局定义。是必须重写的一个方法
二、onStart() 当activity对用户即将可见的时候调用。
三、onRestart() 当activity从停止状态重新启动时调用
四、onResume()activity将要与用户交互时调用此方法,此时activity在activity栈的栈顶,用户输入已经 可以传递给它
五、onPause()当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。一个新activity启动、其它activity被切换至前景、当前activity被销毁时都会发生这种场景。
六、onStop()当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。一个新activity启动、其它activity被切换至前景、当前activity被销毁时都会发生这种场景。
七、onDestroy() 在activity被销毁前所调用的最后一个方法。
这里的话,我只想说具体的几个内容,详情和注释还是自己看我的demo吧。
一、新建一个activity,我比较懒,都是这样建的,因为这样不用我自己一个一个去注册activity。
如果你自己建就 extends Activity
然后到清单文件中注册
<activity
android:name=".One_MainActivity"
<!--或者--> android:name="com.example.baseadapter.One_MainActivity"
</activity>
二、继续代码
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class One_MainActivity extends Activity {
private int param = 1;
private static final String TAG = "日志显示-------------------";
private Button button1;
private Button button2;
// Activity创建时被调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one_activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(One_MainActivity.this,
Two_MainActivity.class);
startActivity(intent);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(One_MainActivity.this,
Three_MainActivity.class);
startActivity(intent);
}
});
Log.i(TAG, "onCreate");
}
// Activity创建或者从后台重新回到前台时被调用
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart");
}
// Activity从后台重新回到前台时被调用
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
}
// Activity创建或者从被覆盖、后台重新回到前台时被调用
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume");
}
// Activity窗口获得或失去焦点时被调用,在onResume之后或onPause之后
/* * @Override public void onWindowFocusChanged(boolean hasFocus) { * super.onWindowFocusChanged(hasFocus); Log.i(TAG, * "onWindowFocusChanged called."); } */
// Activity被覆盖到下面或者锁屏时被调用
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause");
// 有可能在执行完onPause或onStop后,系统资源紧张将Activity杀死,所以有必要在此保存持久数据
}
// 退出当前Activity或者跳转到新Activity时被调用
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
// 退出当前Activity时被调用,调用之后Activity就结束了
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy");
}
/** * Activity被系统杀死时被调用. 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死. * 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态. 在onPause之前被调用. */
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("param", param);
Log.i(TAG, "onSaveInstanceState called. put param: " + param);
super.onSaveInstanceState(outState);
}
/** * Activity被系统杀死后再重建时被调用. * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity. * 这两种情况下onRestoreInstanceState都会被调用,在onStart之后. */
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
param = savedInstanceState.getInt("param");
Log.i(TAG, "onRestoreInstanceState called. get param: " + param);
super.onRestoreInstanceState(savedInstanceState);
}
}
当你创建一个activity并显示时
当你点击启动第二个activity时
当你启动第四个activity时
当你通过键盘返回到主界面时
1、在这里的换还有几个小细节,我们创建一个activity后,如果你点击转屏会怎么样呢。
2、糟了,女朋友突然来电话了,你却在看片。那么这个时候你的activity应该怎么做呢,当然是电话一来,看片就暂停哦,电话一结束,看片继续、、、、(这里就涉及到了生命周期的调用问题了。)
这里不好解释,越解释越复杂。还是偷偷看demo吧。
操作步骤是,开启activity——点击”GO two”——点击键盘返回
对了,这里附上音频调用的方法
下载现ogg\map3等等格式的音频文件,那么如何在android程序中播放。
解决方法:
1. 在res文件夹中新建raw文件夹,将音频文件放入raw文件夹中。
2. 在要触发播放的地方添加如下代码:
MediaPlayer mediaPlayer;
mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.qqlove);
mediaPlayer.start();
一、activity的两种启动方式
1、 Intent intent = new Intent(当前类名.this,
跳转类名.class);
startActivity(intent);
//ComponentName(组件名称)是用来打开其他应用程序中的Activity或服务的。
ComponentName componentName = new ComponentName(当前类名.this, 其他程序类名.class);
intent.setComponent(componentName);
startActivity(intent);
二、启动系统中的其他应用
Intent intent = new Intent();
// 进网页
// intent.setAction(Intent.ACTION_VIEW);
// Uri uri = Uri.parse("http://www.baidu.com");
// 进相册
// intent.setAction(Intent.ACTION_GET_CONTENT);
// intent.setType("image/*");
// 发短信
// intent.setAction(Intent.ACTION_SEND);
// intent.setType("text/plain");
// intent.putExtra(Intent.EXTRA_TEXT, "Android activity 入门");
// 打电话
intent.setAction(intent.ACTION_VIEW);
Uri uri = Uri.parse("tel:110");
intent.setData(uri);
startActivity(intent);
时间关系就不分析了,如有疑问可以留言或者看我的demo
地址:http://download.csdn.net/detail/zhan1350441670/8953657