Fork me on GitHub

Android之Activty

Android之Activty

参数 作用
Intent 启动Activity、Service
Bundle Map形式的Parcelable values.
Context APP的上下文环境

处理网页跳转APP的Activity

http://www.example.com/item?key1=value1&key2=value2
https://www.example.com/item?key1=value1&key2=value2

Activity的配置如下
<activity android:name="..XXActivity">
<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" 
        android:host="www.example.com" />
  <data android:scheme="https" 
        android:host="www.example.com" />
  <data android:path="/" />
  <data android:path="/item" />
</intent-filter>
</activity>

Activity的处理界面中 获取直接跳转的地址
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
  String param1 = data.getQueryParameter("param1");
  String param2 = data.getQueryParameter("param2"); }

启动模式

  • standard:《=4.4的版本是在启动Task中新建;>=5.0的版本是新建或复用Task,根据taskAffinity来定
  • singleTop:栈顶复用模式,和标准模式差不多,区别是如果实例已经存在在顶部,会调用onNewIntent()方法代替创建初始化
  • singleTask:栈内复用模式,只存在一个实例在系统中,不存在就创建,存在就会被移动到前面并调用onNewIntent()方法
  • singleInstance:单实例模式,一种加强版的SingleTask模式,此模式的Activity只能单独位于一个任务栈中。

属性taskAffinity与allowTaskReparenting是配合使用的,taskAffinity指定任务栈名称。属性taskAffinity只有在SingleTask和SingleInstance模式下有效。

启动所有的Activity

  • API 16 finishAffinity()

  • API (11 <= API < 16)
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
|Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
  • 自己记录Activity并移除
  • APP强制退出

分屏

android:resizeableActivity=["true" | "false"] //支持API 24以上
//设置分屏的大小
<activity android:name=".XXActivity">
  <layout android:defaultHeight="500dp"
    android:defaultWidth="600dp"
    android:gravity="top|end"
    android:minHeight="450dp"
    android:minWidth="300dp" />
</activity>
posted @ 2022-06-12 18:42  KevinAt2022  阅读(86)  评论(0)    收藏  举报