Android应用开发中Activity类的用法

来源:互联网 发布:php反射机制和作用 编辑:程序博客网 时间:2024/05/16 10:57

新创建的activity

package example.com.myapplication;import android.app.Activity;import android.os.Bundle;/** * Created by Administrator on 2016/9/22. */public class FirstActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}

Activity创建完成后,为了它可以访问系统必须要声明注册它到应用的AndroidManifest.xml文件中:

  <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name="example.com.myapplication.FirstActivity"></activity>    </application>
显示跳转

//       Intent intent = new Intent();//      intent.setClass(MainActivity.this, FirstActivity.class);        Intent intent = new Intent(this, FirstActivity.class);        startActivity(intent);
隐身跳转

一个Activity如果需要隐式跳转,那么在清单文件中必须添加以下子节点

 <activity android:name="example.com.myapplication.FirstActivity">            <intent-filter>                <action android:name="com.example.startFirst"></action>                <category android:name="android.intent.category.DEFAULT"></category>            </intent-filter>        </activity>
Intent intent = new Intent();        intent.setAction("com.example.startFirst");        startActivity(intent);

###应用场景
* 显示意图:启动同一个应用中的Activity
* 隐式意图:启动不同应用中的Activity
* 再启动效率上,隐式远远低于显式
* 如果系统中有多个Activity与意图设置的Action匹配,那么在启动Activity时,会弹出一个对话框,里面包含所有匹配的Activity


startActivityForResult

MainActivity

 public static final int REQUSET = 1;    public void click(View v) {        Intent intent = new Intent(this, FirstActivity.class);        startActivityForResult(intent,REQUSET);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        // requestCode标示请求的标示 resultCode表示有数据        if (requestCode==REQUSET && resultCode == 1){            Toast.makeText(this,data.getStringExtra("data"),Toast.LENGTH_SHORT).show();        }    }

FirstActivity
public class FirstActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.fisrt);        Intent intent = new Intent();        intent.putExtra("data", "startActivityForResult");        setResult(1, intent);        finish();    }}

#Activity生命周期 http://blog.csdn.net/eastmoon502136/article/details/50628315
* oncreate:Activity对象创建完毕,但此时不可见
* onstart:Activity在屏幕可见,但是此时没有焦点
* onResume:Activity在屏幕可见,并且获得焦点
* onPause:Activity此时在屏幕依然可见,但是已经没有焦点
* onStop:Activity已经不可见了,但此时Activity的对象还在内存中
* onDestroy:Activity对象被销毁

###内存不足
* 内存不足时,系统会优先杀死后台Activity所在的进程,都杀光了,如果内存还是不足,那么就会杀死暂停状态的Activity所在的进程,如果还是不够,有可能杀死前台进程
* 如果有多个后台进程,在选择杀死的目标时,采用最近最少使用算法(LRU)


###Activity任务栈* 应用运行过程中,内存中可能会打开多个Activity,那么所有打开的Activity都会被保存在Activity任务栈* 栈:后进先出,最先进栈,就会最后出栈###Activity的启动模式* 标准模式:默认就是这个模式* singleTop:如果目标Activity不在栈顶,那么就会启动一个新的Activity,如果已经在栈顶了,那么就不会再启动了* singleTask:如果栈中没有该Activity,那么启动时就会创建一个该Activity,如果栈中已经有该Activity的实例存在了,那么在启动时,就会杀死在栈中处于该Activity上方的所有Activity全部杀死,那么此时该Activity就成为了栈顶Activity。    * singleTask的作用:保证整个栈中只有一个该Activity的实例* singleInstance:设为此模式的Activity会有一个自己独立的任务栈,该Activity的实例只会创建一个,保存在独立的任务栈中    * singleInstance的作用:保证整个系统的内存中只有一个该Activity的实例



0 0
原创粉丝点击