android中一种不常见的函数调用方式

本文详细解析了Android中一种不常见的函数调用方式,并通过具体demo展示了其调用流程及关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android中一种不常见的函数调用方式:

此 demo 中只是做了一件很简单的事,创建一个目录。
调用流程:
initializeFirstTime() --> addIdleHandler() -->  ensureOSXCompatible ()

         private void addIdleHandler() {
             MessageQueue queue = Looper.myQueue();
             queue.addIdleHandler( new MessageQueue.IdleHandler() {
                 @Override
                 public boolean queueIdle() {
                     Storage. ensureOSXCompatible();
                     Storage. ensureQQShortVideoCompatible();
                     return false;
                 }
             });
         }

     /**
     * OSX requires plugged -in USB storage to have path /DCIM/NNNAAAAA to be
     * imported. This is a temporary fix for bug#1655552.
     */
    public static void ensureOSXCompatible () {
        File nnnAAAAA = new File( DCIM, "100ANDRO");
        if (!( nnnAAAAA.exists() || nnnAAAAA.mkdirs())) {
            Log.e( TAG, "Failed to create " + nnnAAAAA.getPath());
        }
    }


关键点在 addIdleHandler() 函数中,会先获主线程的消息队列,向消息队列中添加一个新的MessageQueue.IdleHandler。
当调用IdleHandler.queueIdle()返回false时,此MessageQueue.IdleHandler会自动的从消息队列中移除。
或者调用removeIdleHandler(MessageQueue.IdleHandler)也可以从消息队列中移除MessageQueue.IdleHandler。
addIdleHandler这个函数的具体释义可以参见:http://developer.android.com/reference/android/os/MessageQueue.html

addIdleHandler 一般是在 onCreate() 函数或者 initializeFirstTime() 函数当中调用。
在这里可以套用此模式,做任何你想做的事。也可以在此处创建一些UI界面等。
         private void addIdleHandler() {
             MessageQueue queue = Looper.myQueue();
             queue.addIdleHandler( new MessageQueue.IdleHandler() {
                 @Override
                 public boolean queueIdle() {
                     // TODO Auto-generated method stub
                     //你想做的任何事情
                     //........
                     //........
                     return false;
                 }
             });
         }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值