安卓通过Application获取当前Activity的实例(程序中不推荐保存Activity的实例)

在大型安卓项目中,当Module需与App交互并弹出全局dialog时,通常面临获取当前显示Activity实例的挑战。文章介绍了通过Application获取Activity实例的技巧,但警告这种方法可能导致性能下降和内存泄漏。建议采用弹出全局Activity并设定为对话框样式来避免问题。
摘要由CSDN通过智能技术生成

在应用开发过程中,我们经常遇到在Module与App的交互,如果在Module里收到一条消息或指令,需要App程序中弹出全局的dialog,往往通过广播的方式,交由App中当前显示的Activity来实现,但是项目过大,尤其对于代码量庞大,人员混杂的项目,没有一个BaseActivity,无法获取到当前的Activity,实现就比较困难,通过网上学习,找到了一种获取Activity对象的实例的方法,代码如下


import android.app.Activity;

import java.lang.ref.WeakReference;

/**
 * 获取当前显示的Activity
 * Created by linfeifei on 2017/12/29.
 */

public class MyActivityManager {

    private static MyActivityManager sInstance = new MyActivityManager();
    private WeakReference<Activity> sCurrentActivityWeakRef;


    private MyActivityManager() {

    }

    public static MyActivityManager getInstance() {
        return sInstance;
    }

    public Activity getCurrentActivity() {
        Activity currentActivity = null;
        if (sCurrentActivityWeakRef != null) {
            currentActivity
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值