• Android启动模式(三种)


    1,标准启动模式

      通过任务栈,每点一次button,将每一个实例都压入,然后点返回键时候,就弹出之前压入的实例。

        每一次的地址都是不同的

        测试代码:通过创建一个button和textView来显示本身的TastId和实例的ID

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     private TextView tv;
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_main);
     8 
     9         tv= (TextView) findViewById(R.id.tv);
    10 
    11         tv.setText(String.format("TaskId:%d
    Current Activity ID:%s",getTaskId(),toString()));
    12         findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
    13             @Override
    14             public void onClick(View v) {
    15                 startActivity(new Intent(MainActivity.this,MainActivity.class));
    16             }
    17         });
    18     }
    19 
    20 }

    2,singleTop

    这种模式需要在AndroidManifest中进行配置

      地址不变

      

    原因:如字面意思,Top,即在栈顶,只能创建一个实例

    android:launchMode="singleTop"
    如果不配置,就默认为standard 也就是第一种
    1 <activity
    2             android:launchMode="singleTop"
    3             android:name=".MainActivity">
    4             <intent-filter>
    5                 <action android:name="android.intent.action.MAIN" />
    6 
    7                 <category android:name="android.intent.category.LAUNCHER" />
    8             </intent-filter>
    9         </activity>

    3,singleTask与singleInstance

      只需要把配置文件中的lauchMode改为singleTask或者singleInstance

       (1)singleTask 

          

          当此时运行时,main点击按钮,跳转到B,然后我们在点按钮跳转回A,发现地址没有变化。

          但是,如果此时,我们点击返回按钮,程序就会退出!

        原因:当我们第二次点击按钮时,程序会直接把B弹出任务栈以外,栈内只剩下main

        (2)singleInstance

          

          每次点击按钮,main和B的地址都固定了。

        原因:存在于一个独立的任务栈中,只含有一个activity。

          此外,我们在点击按钮时,应该注意到,明显的切换页面的效果。

            也要注意到taskID的变化(taskID就是任务栈的编号)

          

  • 相关阅读:
    【英语天天读】Places and People
    【OpenCV学习】错误处理机制
    【英语天天读】Heart of a stranger 陌生的心灵
    【英语天天读】第一场雪
    【OpenCV学习】角点检测
    【英语天天读】Life is What We Make It
    【英语天天读】培养自信
    【英语天天读】Perseverance
    【OpenCV学习】cvseqpartition序列分类
    【英语天天读】自然
  • 原文地址:https://www.cnblogs.com/icyhusky/p/5974269.html
Copyright © 2020-2023  润新知