zoukankan      html  css  js  c++  java
  • ActivityJump+ActivityManager【Activity之间的跳转和Activity任务栈管理】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处!

    前言

    封装Activity跳转的方法以及实现Activity任务栈管理。

    效果图

     

    代码分析

    ActivityJump:封装Activity跳转以及任务栈增删改查操作方法

    ActivityManager : Activity任务栈的管理

    常用方法:

    AddToTack(Activity mActivity) :将Activity添加到任务栈中,一般在Activity的OnCreate方法中调用

    LogAllActivityNames() : 打印activity任务栈里面的所有Activity名称

    finnishAllActivitys() : 销毁所有的Activity

    ==================================================================

    NormalJump(Context mContext, Class<?> cls) : 普通跳转

    NormalJumpAndFinish(Context mContext, Class<?> cls) : 普通跳转并销毁当前界面

    ==================================================================

    BundleJump(Context mContext, Class<?> cls, Bundle bundle) : 带参跳转

    BundleJumpAndFinish(Context mContext, Class<?> cls, Bundle bundle) : 带参跳转,并销毁当前界面

    ==================================================================

    JumpForResult(Activity mActivity, Class<?> cls,int requestCode) : 不带参数的返回值跳转

    JumpForResult(Activity mActivity, Class<?> cls,Bundle bundle, int requestCode) : 带参数和返回值跳转

    ==================================================================

    Back(Context mContext) : 代替finish()

    BackToAppointActivity(Context mContext,Class<?> cls) : 从当前界面返回到指定的界面:并finish所有activity

    ==================================================================

    监听返回软键事件

    /**截取返回软键事件*/
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                ActivityJump.Back(this);//防止内存泄漏
    
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

    使用步骤

    一、项目组织结构图

    注意事项:

    1、  导入类文件后需要change包名以及重新import R文件路径

    2、  Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖

    二、导入步骤

    将ActivityJump和ActivityManager复制到项目中

    在BaseActivity中添加以下代码

    package com.why.project.activityjumpdemo.activity;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.KeyEvent;
    
    import com.why.project.activityjumpdemo.utils.ActivityJump;
    
    /**
     * Created by HaiyuKing
     * Used Activity基类
     */
    
    public class BaseActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ActivityJump.AddToTack(this);
            super.onCreate(savedInstanceState);
        }
    
        /*
         */
        @Override
        protected void onStop() {
            super.onStop();
    
            ActivityJump.LogAllActivityNames();
        }
    
        /**截取返回软键事件*/
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                ActivityJump.Back(this);//防止内存泄漏
    
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    
    }

    三、使用方法

    普通跳转

    btn_openActivity.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ActivityJump.NormalJump(MainActivity.this,SecondActivity.class);
                }
            });

     

    普通返回

    btn_back.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ActivityJump.Back(SecondActivity.this);
                }
            });

     

    混淆配置

    参考资料

    暂时空缺

    项目demo下载地址

    https://github.com/haiyuKing/ActivityJumpDemo

  • 相关阅读:
    花儿飘落何处
    别了,攀枝花
    致我心爱的梦中女孩
    解锁华为云AI如何助力无人车飞驰“新姿势”,大赛冠军有话说
    技术实操丨HBase 2.X版本的元数据修复及一种数据迁移方式
    技术实践丨手把手教你使用MQTT方式对接华为IoT平台 华为云开发者社区
    必须收藏:20个开发技巧教你开发高性能计算代码
    原来AI也可以如此简单!教你从0到1开发开源知识问答机器人
    诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额
    详解GaussDB(DWS) explain分布式执行计划
  • 原文地址:https://www.cnblogs.com/whycxb/p/7443052.html
Copyright © 2011-2022 走看看