android

Android_Activity

2015-07-09  本文已影响196人  738bc070cd74

生命周期

官网上的生命周期图:

activity_lifecycle.png

基本函数

public void onCreate(Bundle savedInstanceState);
public void onStart();
public void onRestart();
public void onActivityResult(int requestCode, int resultCode, Intent data);
public void onResume();
public void onPause();
public void onStop();
public void onDestroy();
public void attach(Activity proxyActivity, DLPluginPackage pluginPackage);
public void onSaveInstanceState(Bundle outState);
public void onNewIntent(Intent intent);
public void onRestoreInstanceState(Bundle savedInstanceState);
public boolean onTouchEvent(MotionEvent event);
public boolean onKeyUp(int keyCode, KeyEvent event);
public void onWindowAttributesChanged(LayoutParams params);
public void onWindowFocusChanged(boolean hasFocus);
public void onBackPressed();
public boolean onCreateOptionsMenu(Menu menu);
public boolean onOptionsItemSelected(MenuItem item);

特殊情况下触发(横竖屏切换,资源不足被杀)

对话框模式

<activity
        android:name=".TAccountActivity"
        android:theme="@android:style/Theme.Translucent" 
        android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
        android:screenOrientation="portrait"
        />

布局文件设置在父布局的中间,动态添加一个fragment

 <FrameLayout
    android:id="@+id/account_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
     />

启动模式

启动方式

显式

需要知道SecondActivity的存在

Intent intent=new Intent(MainActivity.this, SecondActivity.class); 
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent);

使用Intent flags

除了使用manifest文件之外,你也可以在调用startActivity()方法的时候,为Intent加入一个flag来改变Activity与任务的关联方式

隐式

隐式启动不同之处在于我们并不需要像Intent(MainActivity.this, SecondActivity.class)这样传参数然后再Start另一个Activity.我们需要在intent添加过滤器intentfilter。

<activity
    android:name="com.example.android.tst.SecondActivity"
    android:label="@string/title_activity_main" > 
    <intent-filter> 
        <action android:name="com.example.android.tst.SecondActivity"/> 
        <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity>

Intent intent=new Intent("com.example.android.tst.SecondActivity"); 
startActivity(intent);

setType 调用后设置 mimeType,然后将 data 置为 null;
setData 调用后设置 data,然后将 mimeType 置为 null;
setDataAndType 调用后才会同时设置 data 与 mimeType。

清空返回栈

如果用户将任务切换到后台之后过了很长一段时间,系统会将这个任务中除了最底层的那个Activity之外的其它所有Activity全部清除掉。当用户重新回到这个任务的时候,最底层的那个Activity将得到恢复。这个是系统默认的行为,因为既然过了这么长的一段时间,用户很有可能早就忘记了当时正在做什么,那么重新回到这个任务的时候,基本上应该是要去做点新的事情了。
当然,既然说是默认的行为,那就说明我们肯定是有办法来改变的,在<activity>元素中设置以下几种属性就可以改变系统这一默认行为:

启动流程

启动流程.png
上一篇 下一篇

猜你喜欢

热点阅读