关于android的App切换,Home,最近任务动作对应的启动模式那些事

启动模式这些东西,文字说明真的很晦涩难懂,主要不形象,

主要难理解的就是singleTask 和  singleInstance了

为啥,因为这两个涉及到不同task的叠加,就这么简单

叠一叠你就晕了,因为你根本不知道,原来内部是叠加了

所以你想不明白

啥叫不同task,打开你的最近任务就知道了

乍一看好像一个app就是一个task嘛

我想说No,展示给用户的最好是一个嘛,可能有多个,叠在一起了

假如你的应用程序跨应用打开了一个singleInstance的页面,那是不是就两个了?

那多个task是怎么一个排列呢?叠加

就是你点返回,感觉好像是返回的自己app页面,到最后返回的是别的app的,最底下的才是你自己的

因为叠加到你上面来了嘛,就跟拼app似的

当然,你如果想,你可以把系统的app,拼拼凑凑,玩一玩都可以的

知道了叠加,再回到singleTask,也就是你打开的activity是singeTask,就很容易理解了

他会拉一个单独的task,,放到哪个task呢?根据activity的taskAffine,,可能是本app,也可能是别的app然后把自己放到task

再然后拉过来就叠加到你身上

最后一个知识点就是,点home和最近任务,就不叠加了,task里的activity回退结束,就到桌面,就这么回事

打完收工

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例代码,实现了底部导航栏和四个Fragment之间的切换: 1. 首先,在XML布局文件中添加BottomNavigationView控件,用于显示底部导航栏: ``` <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/navigation" /> ``` 2. 在res/menu目录下创建一个名为navigation.xml的菜单文件,添加四个菜单项,每个菜单项对应一个Fragment: ``` <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@drawable/ic_home_black_24dp" android:title="@string/title_home" /> <item android:id="@+id/navigation_dashboard" android:icon="@drawable/ic_dashboard_black_24dp" android:title="@string/title_dashboard" /> <item android:id="@+id/navigation_notifications" android:icon="@drawable/ic_notifications_black_24dp" android:title="@string/title_notifications" /> <item android:id="@+id/navigation_profile" android:icon="@drawable/ic_person_black_24dp" android:title="@string/title_profile" /> </menu> ``` 3. 创建四个Fragment,分别对应四个菜单项。这里以HomeFragment为例: ``` public class HomeFragment extends Fragment { public HomeFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_home, container, false); } } ``` 4. 在MainActivity中,实现BottomNavigationView.OnNavigationItemSelectedListener接口,并在onCreate方法中设置底部导航栏的菜单项点击件: ``` public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView navigation = findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener(this); // 默认显示HomeFragment loadFragment(new HomeFragment()); } @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment fragment = null; switch (item.getItemId()) { case R.id.navigation_home: fragment = new HomeFragment(); break; case R.id.navigation_dashboard: fragment = new DashboardFragment(); break; case R.id.navigation_notifications: fragment = new NotificationsFragment(); break; case R.id.navigation_profile: fragment = new ProfileFragment(); break; } return loadFragment(fragment); } // 加载Fragment方法 private boolean loadFragment(Fragment fragment) { if (fragment != null) { getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, fragment) .commit(); return true; } return false; } } ``` 这样,底部导航栏和四个Fragment之间的切换就实现了。注意,需要在布局文件中添加一个FrameLayout作为Fragment的容器。 希望这个示例代码能够帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值