android 获取当前运行的activity(待整理测试····)
来源:互联网 发布:php xss攻击防御 编辑:程序博客网 时间:2024/05/21 06:36
目前做im即时通信聊天,获取到消息需要判定是否是属于当前聊天窗口,以便分别处理,所以查阅了几种方法,几个解决方法:
1-How to get current foreground activity context in android? – Stack Overflow
2-android – How to check if my activity is the current activity running in the screen – Stack Overflow
普遍是采用给每个Activity都添加对应的代码:
@Override protected void onResume() { super.onResume(); AppContext.getInstance().setCurrentActivity(this); } @Override protected void onPause() { AppContext.getInstance().setCurrentActivity(null); super.onPause(); } @Override public void onDestroy() { AppContext.getInstance().setCurrentActivity(null); super.onDestroy(); }
然后在自己的app中:
此处我的是:
import android.app.Activity;import android.app.Application;public class AppContext extends Application{ private Application parentApp; private Activity curActivity; public Application getAppContext() { return parentApp; } private static class LazyHolder { static AppContext instance = new AppContext(); } public static AppContext getInstance() { return LazyHolder.instance; } @Override public boolean Start(Map<String, Object> args) { Object param = args.get(appContext); if (param instanceof Application) { parentApp = (Application)param; return true; } return false; } @Override public void Stop(Map<String, Object> args) { } public void setCurrentActivity(Activity curActivity){ this.curActivity = curActivity; } public Activity getCurrentActivity(){ return this.curActivity; } public boolean isInAdapterActivity(){ boolean isInAdapterActivity = false; if(null != curActivity){ if(curActivity instanceof AdapterActivity){ isInAdapterActivity = true; } } return isInAdapterActivity; } public boolean isInScanActivity(){ boolean isInScanActivity = false; if(null != curActivity){ if(curActivity instanceof ScanActivity){ isInScanActivity = true; } } return isInScanActivity; } public boolean isInMainActivity(){ boolean isInMainActivity = false; if(null != curActivity){ if(curActivity instanceof MainActivity){ isInMainActivity = true; } } return isInMainActivity; }}然后在对应各个Activity:
- AdapterActivity
- ScanActivity
- MainActivity
中就可以去调用:
if(AppContext.getInstance().isInMainActivity()){ //do sth. }
了。
对应任何的Activity来说,只要处于:
当前运行(Running)
的状态,则都必须经过
onResume
所以,在onResume中,设此时Activity为当前的Activity。
对应的:
当Activity从Running变成别的状态时,也会经过onPause,所以在onPause中去设置当前Activity为null
(切换到别的Activity时,就进入了别的Activity的onResume了,就把别的Activity设置为当前的Activity了)
以及:
当Activity处于onDestory后,也同样设置当前Activity为null)
此时继续之前的循环:
如果进入别的Activity的话,自然会进入onResume,自然会设置别的Activity为当前正在运行的Activity。
---------------------------分割 线----------------------------------另外找到的两种方法:
第一种:要方便一点(Service中无法使用)
代码如下:
private String getRunningActivityName() { String contextString = context.toString(); return contextString.substring(contextString.lastIndexOf(".") + 1, contextString.indexOf("@")); }第二种:要稍微麻烦一点,需要一个权限(推荐)代码如下:<uses-permission android:name="android.permission.GET_TASKS" />private String getRunningActivityName(){ ActivityManager activityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName(); return runningActivity; }
- android 获取当前运行的activity(待整理测试····)
- android 获取当前正在运行的activity
- android 如何获取当前运行的activity
- 获取当前运行的activity
- android获取当前运行Activity名字的方法
- Android通过ADB命令获取当前运行的Activity
- android获取当前运行Activity名字的方法
- Android自动化测试:获取当前前台应用的Activity名字
- android获取当前运行Activity的名字(解决避免及时聊天再出现通知)
- android 获取当前的activity
- 获取当前正在运行的Activity
- 获取当前界面正在当前运行的Activity的名字
- Android获取当前运行程序栈中的Activity
- Android获取当前活动(最顶层)的activity
- android中获取当前activity的名称
- android中获取当前activity的名称
- Android获取当前最前面的Activity
- Android 中获取当前的 Activity
- 资本运作
- iOS开发之-xcode 6 exporting ipa 提示 Your account already has a valid iOS distribution certificate 的另一种解决
- 使用loadrunner11录制脚本时出现events一直是0解决方法
- Struts 2 REST 框架介绍
- (JAVA)Object类总结
- android 获取当前运行的activity(待整理测试····)
- 异或 ^ 的几个作用
- 陈怡暖:股民转投贵金属市场时该注意什么?
- 折叠式侧滑菜单
- rust.vim文件放到什么地方,vim才能正常识别Rust
- js问题记录
- Maven-入门篇
- java中常用的字符串的截取方法
- uva-12169&&hdu-2769-Disgruntled Judge 扩展欧几里得,模线性方程