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

posted @ 2017-08-28 00:38  HaiyuKing  阅读(1150)  评论(1编辑  收藏  举报