Android 应用开发<一> Activity

2018/08/13 Android App

Android 应用开发<一> Activity

活动开始

  • 重载 onCrate 方法,虽然在创建时Android studio 已经自动帮我们完成了,还是得说一下。
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    //调用父类的onCreate方法,必须,不然会发生异常
        super.onCreate(savedInstanceState);
    // 加载一个布局,比如我有一个 activity_main.xml 要用于设置为当前布局
        setContentView(R.layout.activity_main);
    }

(1)在Activity启动前,尽量少做。

(2)对于布局比较复杂的时候,可以考虑不要一次性全部加载上,动态加载是一个好的办法。

(3)对于及时需要的数据,加载起来耗时的又有异常危险的,一定记得开辟一个线程来做这些动作,千万记得不要做阻塞主线程(UI线程)的任何事情。

(4)对于特殊情况下,Activity启动确实需要大量工作时候,可以考虑先加载一个简单的布局(或是Activity)来过渡.。

(5)所有的目的都是让你要启动的组件尽快上场,而不是以画好妆为主,这样的话客人会等不及的,顾客就是上帝。

  • 注册 AndroidManifest.xml。所有的 activity 都需要在 AndroidManifest.xml 的 application 标签内进行注册
        <activity android:name=".MainActivity">
        <!-- intent-filter 标签中告知了主活动是哪个,这样子点击 app 就知道该启用哪个作为主 activity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  • 使用 Intent 在活动中切换。 显式intent
    //显式 intent
                  Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                  startActivities(intent);
    

    隐式intent,在 AndroidManifest.xml 中注册,action 匹配规则为只要Intent中包含其中一个action就会启动相应的 activity,category 的匹配规则是只有全包含才能启动,在 new Intent(Intent.ACTION_START);中,会默认带有 android.intent.category.DEFAULT,故需要添加

              <intent-filter>
                  <action android:name="com.hooltech.chapter2_test1.ACTION_START"/>
                  <category android:name="android.intent.category.DEFAULT" />
              </intent-filter>
    
    Intent intent = new Intent(Intent.ACTION_START);
    startActivity(intent);
    

    隐式的活动有很多种用法,比如可以使用其他应用程序的功能都是通过隐式 intenet 来实现的。

活动的生命周期

活动的启动方式

standard、singleTop、singleTask、singleInstance 四种启动模式,在 AndroidManifest.xml 中通过 给 标签指定 android:launchMode 进行控制

Search

    Table of Contents