关于Android平台上面is not valid; is your activity running?

Android平台上面可以通过好几种方式得到Context :

1、通过Activity的this

2、getApplicationContext()

3、getParent

这三种各自得到的是不同的,正常的话应该建议使用Activity.this.这个是最不容易出现问题的使用方法, 如果使用了第二种或者第三种的时候,将在Activity关闭掉的时候可能会出现异常 还是老老实实的使用Activity.this来得到Context的引用

补充:  在显示Dialog前检测一下Activity是否运行结束 ,可以避免发生这个错误

检查Activity是否运行:

GET_TASKS权限,获取运行的活动

<uses-permission android:name="android.permission.GET_TASKS"/>

  public static boolean isActivityRunning(Context mContext,String activityClassName){
       ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> info = activityManager.getRunningTasks(1);
        if(info != null && info.size() > 0){
            ComponentName component = info.get(0).topActivity;
            if(activityClassName.equals(component.getClassName())){
                return true;
            }
        }
        return false;
    }
时间: 2024-10-10 16:21:30

关于Android平台上面is not valid; is your activity running?的相关文章

调研Android平台的开发环境的发展演变

一.发展演变 1.Android版本进化史 阿童木(Android beta)和发条机器人(Android1.0)->Cupcake(Android1.5)->Dount(Android1.6)->Eclair(Android2.0/2.1)->Froyo(Android2.2/2.2.1)->Gingerbread(Android2.3.x)->Honeycomb(Android3.0/3.1/3.2)->Ice Cream Sandwich(Android4.

Android平台下使用lua调用Java代码经验总结

动态语言以其执行的灵活性,可配置性.方便调试能够为开发带来极大的方便.假设用好了.能够极大的提高开发的效率. 怪不得像游戏开发这样复杂的软件开发里没有不集成脚本语言的. 当中,lua以其小巧,灵活.方便扩展,方便嵌入被用于大多数的游戏开发中. 对于我来说.对于一个充分认识到动态的力量的人来说,在软件开发里集成一种脚本语言成为一种非常重要的非常有意义的工作. 可是在Android平台.在试过Python后,发现尽管集成也不是什么困难的事,可是感觉它还是有点大,一个动态库就有3M多,python库还

【iOS开发】封装聊天输入框MKInputBar,语音支持iOS &amp; Android平台

最近做的一个项目,有聊天的功能,最开始从网上找了个被人封装好的输入框,写的很复杂(反正我有点被看迷糊了),用起来呢又有点问题,最终放弃,自己封装了一个聊天输入框MKInputBar,难度不大.语音支持iOS和Android平台,其实就是把caf转换为mp3.底部给出了Demo工程,用起来很简单. 先上几张图吧       用法很简答,封装好只有两个文件MKInputBar.h & MKInputBar.m,实现三个代理方法: 1 - (void)inputBar:(MKInputBar *)in

基于Android平台的i-jetty网站智能农业监控系统

基于android平台i-jetty网站的智能农业监控系统 摘要:传统的监控系统,一般是基于PC的有线通信传输,其有很多不足之处,如功耗较高.布线成本高.难度大,适应性差,可扩展性不强,增加新的通信线路需要再次布线施工,而且维护起来也比较麻烦,一旦线路出问题,需要繁琐的检查.而嵌入式Web监控系统是基于物联网技术,其无线通信技术具有成本低廉.适应性强.扩展性强.信息安全.使用维护简单等优点. 智能农业中,种植大棚是通过大棚内安装温湿度以及光照传感器,来对农作物的环境参数进行实时采集,由Web监控

Unity3D在Android平台使用嵌入式数据库Sqlite,解决无法找到数据库文件的问题

做一个需要嵌入式数据库Sqlite 的unity3d项目,在pc机上运行良好,需要发布到Android平台上,于是,各种坑爹...会遇到找不到数据库文件的问题.当在pc机上使用sqlite时,当执行SqliteConnection dbConnection = new SqliteConnection("data source = test.db");语句时,如果有这个数据库文件则建立连接,如果没有则创建出这个文件,然后建立连接.当在Android平台上时,扯淡的事情就开始了,总之便不

用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

用Kotlin开发android平台语音识别,语义理解应用(olamisdk) http://blog.csdn.net/ls0609/article/details/75084994

如何在android平台上使用js直接调用Java方法[转]

转载自:http://www.cocos.com/docs/html5/v3/reflection/zh.html #如何在android平台上使用js直接调用Java方法 在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法.它的使用方法很简单: var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parame

「Unity」与iOS、Android平台的整合:3、导出的Android-Studio工程

本文属于「Unity与iOS.Android平台的整合」系列文章之一,转载请注明出处. Unity默认导出的是Android-Eclipse工程,毕竟Eclipse for Android开发在近一两年才开始没落,用户量还是非常巨大的. 个人认为AndroidStudio非常好用,能轻易解决很多Eclipse解决不了或者很难解决的问题. 所以我将Unity导出的Andoid工程分为Eclipse和AndroidStudio两部分. 不过我之后的相关内容都会使用AndroidStudio,希望依然

Cocos2d-x 3.0修改Android平台帧率fps - 解决游戏运行手机发热发烫问题

使用Cocos2d-x 3.0开发游戏之后,发现游戏在android手机上发热非常严重,在魅族2上,几乎担心手机会爆炸了~~~采取的一个措施就是降低帧率,因为游戏对于帧率要求不是非常高. 做过cocos2d开发的同学应该都知道在win32平台修改帧率的方式非常简单,就是在AppDelegate.cpp文件中修改: 1 director->setAnimationInterval(1.0 / 40); 但是这种修改方式在导出android安卓apk到真机测试的时候,发现左下角的调试信息还是现实60