Android的四中启动模式:singleTask的应用

为了解决:从一个Activity中的其中一个Fragment中跳转到另一个Activity中,在此时的Activity中需要点击一个控件到原先的Activity中并返回到原先的Activity中显示的Fragment

解决方案:将带有Fragment的Activity在AndroidManifest中设置其启动模式为android:launchMode=”singleTask”。由于singleTask模式下,每次都返回到原先的Activity中并不会创建新的Activity,所以需要重写onNewIntent方法,并且在其附属的Fragment中调用onResume方法与之对应。

<activity
   android:name=".activity.MainActivity"
   android:launchMode="singleTask"
  />

在Activity中

 //将更新的Intent通过getIntent().putExtras(intent)共享出来
 @Override
 protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
     Log.e("locationStr","onNewIntent");
     setIntent(intent);
     getIntent().putExtras(intent);
 }

在Fragment中

 @Override
 public void onResume() {
    super.onResume();
    locationStr = getActivity().getIntent().getStringExtra("locationStr");
    location_btn.setText(locationStr);
 }

Android的四中启动模式

1.standard:默认模式 (拿来主义)

每次都会创建一个新的Activity(多次实例化)
android:launchMode=”standard”

2.singleTop(拒绝堆叠)

没有这个Activity 直接创建
如果有 并且在栈顶 直接拿来使用 调用onNewIntent(Intent intent)方法
如果有 没有在栈顶 重新创建一个Activity实例
android:launchMode=”singleTop”、

3.singleTask:(独立门户)

没有Activity直接创建
如果有 并且在栈顶 直接拿来使用 调用onNewIntent(Intent intent)方法
如果有 没有在栈顶 将在它上方的 Activity pop出去 自身有回到栈顶位置调用onNewIntent(Intent intent)方法
android:launchMode=”singleTask”

4.singleInstance (孤独寂寞)(这个用法不多 浪费空间)

系统会单独分配一个stack 不允许其他的Activity和他共享一个stack
android:launchMode=”singleInstance “
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值