Android开发记录一之Activity初步及生命周期

1.目录结构

src即源代码,gen文件夹为ADT插件自动生成的,包含R.java文件,Android4.2.2包含jar文件,assets可以放任何文件,res文件放入任何东西都会在R.java文件生成ID,可以通过引用R.java文件中生成文件ID

res中:

drawable-hdpi,ldpi,mdpi分别为高分辨率,低分辨率,低分辨率

layout放置布局文件,包含xml布局文件,控制MainActivity的布局

values放置应用程序用到的变量值,如strings.xml 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">test</string>
    <string name="hello_world">Hello world!</string>
</resources>
包含了键值对,也会在R.java中生成ID

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"     ->应用图标
        android:label="@string/app_name"         ->应用名字
        android:theme="@style/AppTheme" >
        <!-- 引用R.java -->
        <activity
            android:name=".MainActivity"      ->注册Activity,记得加点
            android:label="@string/app_name" >
            <intent-filter>               ->默认打开这个Activity
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.Activity

即一个可见界面,内置许多空间,比如button textview,是用户和应用程序交互接口,是一个空间容器。

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {//继承Activity

	@Override
	protected void onCreate(Bundle savedInstanceState) { //Activity运行时调用的
		super.onCreate(savedInstanceState); //继承父类
		setContentView(R.layout.activity_main);
		TextView tx =(TextView)this.findViewById(R.id.mytx);
		Button bt =(Button)this.findViewById(R.id.mybutton);
	}
}

布局文件.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="${relativePackage}.${activityClass}" >

    <TextView
        android:id="@+id/mytx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button 
        android:id="@+id/mybutton"
        android:layout_width ="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ok"
                />
</RelativeLayout>

会在R.java中生成layout

3.Intent 一个请求

当要启动某个Activity,要指定Component name

传递Action,做哪些动作,比如Action为ACTION_CALL则触发打电话功能

传递Data,传递数据

传递Extras,传递额外信息

第一个Activity中加入监听器,按钮监听

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView tx =(TextView)this.findViewById(R.id.mytx);
		Button bt =(Button)this.findViewById(R.id.mybutton);
		bt.setOnClickListener(new ButtonListener()); //加监听器
	}
	
	class ButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent =new Intent();
			intent.setClass(MainActivity.this,OtherActivity.class);//跳转class方法
			MainActivity.this.startActivity(intent); //调用start方法
			
		}

	}
}
记得在文件中注册OtherActivity

传递数据:

MainActivity中监听的方法如下

public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent =new Intent();
			intent.putExtra("h", "k");
			intent.setClass(MainActivity.this,OtherActivity.class);//跳转class方法
			MainActivity.this.startActivity(intent); //调用start方法
			
		}
public class OtherActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button bt = (Button)this.findViewById(R.id.mybutton);
		Intent intent =getIntent();
		String string = intent.getStringExtra("h");
		bt.setText(string);
		
	}

}

4.生命周期

七个生命周期函数

1、onCreate()     
Acitivity首次创建时被调用。用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作。 

2、onStart() 
Acitivity对用户可见时被调用。 

3、onResume() 
Acitivity获得用户焦点,即用户可操作该Acitivity时被调用。 

4、onPause() 
应用程序启动了其它Acitivity时被调用。一般用于保存当前Acitivity中的数据。 

5、onStop() 
Acitivity不可见时被调用。 

6、onRestart() 
已停止的Acitivity重新启动时被调用。 

7、onDestroy() 
调用Acitivity的finish()方法或Android系统资源不足时被调用。


当一个Activity启动时,会先调用onCreate方法,后调用onStart方法,最后调用onResume方法,是安卓操作系统调用的。

启动第二个Activity,会先调用第一个Activity的onPause方法,然后调用第二个Activity的onCreate方法,后调用onStart方法,最后调用onResume方法,再调用第一个Activity的onStop方法

再back之后,调第二个Activity的onPause方法,再调用第一个Activity的onRestart方法,然后再调用onStart,onResume,再调用第二个Activity的onStop方法,再调用第二个的onDestroy方法。

当再启动第二个Activity,会先调用第一个Activity的onPause方法,然后调用第二个Activity的onCreate方法,后调用onStart方法,最后调用onResume方法,再调用第一个Activity的onStop方法

当调用finish方法,会调用onDestroy方法,或者资源不够用时,会调用onDestroy方法。

当在代码中写入finish()方法,栈中的Activity被销毁掉了。


窗口类型的Activity的声明:

  <activity
            android:name=".OtherActivity"
            android:label="@string/app_name" 
            android:theme="@android:style/Theme.Dialog"
            >
        </activity>
出现窗口类型的Activity时不会调用原先Activity的onStop方法



你可能感兴趣的:(android,安卓,Android开发)