032android初级篇之Timer的使用及获取栈顶包名

测试代码

这段代码的主要功能是使用Timer 定时更新计数。

public class TestTimerActivity extends Activity{
    private  final static String TAG=TestTimerActivity.class.getSimpleName();

    private Timer mWaitTimer;
    private Handler mHandler;
    private TextView mTextView;
    private int mTimes;

    @Override
    protected void onCreate(Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_timer_activity);
        mTextView = (TextView) findViewById(R.id.textView);
        mTextView.setText("TestTimer!");
        mTimes =0;

        mHandler = new Handler() {

            public  void handleMessage(Message msg){
                switch (msg.what){
                    case 1:
                        mTextView.setText(""+mTimes);

                }
                super.handleMessage(msg);
            }
        };

        TimerTask mTimerTask = new TimerTask(){
            @Override
            public void run()
            {
                mTimes++;
                Message msg = new Message();
                msg.what = 1;
                mHandler.sendMessage(msg);
            }
        };
        mWaitTimer = new Timer(true);
        mWaitTimer.schedule(mTimerTask,1000,1000);

    }
}

获取栈顶信息

android 5.0 之后官方屏蔽了获取栈顶信息的api,如下的方法在大多数机器上可用:

 public String getTaskPackname() {
    ActivityManager.RunningAppProcessInfo currentInfo = null;
    Field field = null;
    int START_TASK_TO_FRONT = 2;
    String currentApp = "CurrentNULL";
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        try {
            field = ActivityManager.RunningAppProcessInfo.class.getDeclaredField("processState");
        } catch (Exception e) {
            e.printStackTrace();
        }
        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> appList = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo app : appList) {
            if (app.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                Integer state = null;
                try {
                    state = field.getInt(app);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if (state != null && state == START_TASK_TO_FRONT) {
                    currentInfo = app;
                    break;
                }
            }
        }
        if (currentInfo != null) {
            currentApp = currentInfo.processName;
        }
    } else {
        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
        currentApp = tasks.get(0).processName;
    }
    // Log.e("TAG", "Current App in foreground is: " + currentApp);
    return currentApp;
}

参考链接

  1. Android 计时器Timer用法
  2. Android 监听网络状态+源代码
  3. Android 5.0(包含5.0以下版本) 获取栈顶应用程序包名

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王磊的博客

react-native绑定优酷SDK-附效果图和源码

ReactNative绑定优酷SDK需要用到两部分知识: 优酷本身的sdk绑定; RN与原生界面的交互; 效果: ? RN版本:0.49.3 代码更新日期:20...

3906
来自专栏编程之路

羊皮书APP(Android版)开发系列(十二)Android Socket UDP大文件传输

1774
来自专栏Android工程师的修仙之旅

自己动手写Android插件化框架

本文旨在通过两个实例直观的说明插件的实现原理以加深对插件内开发的理解,因此不会深入探讨背景和原理,代码也尽量专注于核心逻辑。

5503
来自专栏向治洪

viewpager循环滚动和自动轮播的问题

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,...

3166
来自专栏猿份到

浅谈Retrofit 源码

现在的项目界面都是按iOS的风格,虽然界面无法发挥出我们大Android的风格,网络框架动不动就是mvp+ okhttp +retrofit+rxjava,m...

3618
来自专栏增长技术

App Intro相关

##How to use Add this to your build.gradle:

782
来自专栏码匠的流水账

聊聊springcloud的featuresEndpoint

spring-cloud-commons-2.0.0.RC1-sources.jar!/org/springframework/cloud/client/Com...

911
来自专栏码匠的流水账

micrometer自定义metrics

spring-boot-actuator-autoconfigure-2.0.0.RELEASE-sources.jar!/org/springframewor...

2152
来自专栏向治洪

android电话拦截

其实大家可以下载 xxx卫士看下,它设置来电拒接模式后,都是会启动设置MMI指令的界面。然后再去“设置->通话设置->来电转接”,看看 “占线时转接” 设置好的...

5219
来自专栏一个会写诗的程序员的博客

关于Webview如何自动登录保存登录信息

1013

扫码关注云+社区

领取腾讯云代金券