zoukankan      html  css  js  c++  java
  • Android中Services之异步IntentService(二)

    转载地址:http://www.cnblogs.com/zhangs1986/p/3602154.html

    IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。

    IntentService有以下特点:

    (1)  它创建了一个独立的工作线程来处理所有的通过onStartCommand()传递给服务的intents。

    (2)  创建了一个工作队列,来逐个发送intent给onHandleIntent()。

    (3)  不需要主动调用stopSelft()来结束服务。因为,在所有的intent被处理完后,系统会自动关闭服务。

    (4)  默认实现的onBind()返回null

    (5)  默认实现的onStartCommand()的目的是将intent插入到工作队列中

     继承IntentService的类至少要实现两个函数:构造函数和onHandleIntent()函数。要覆盖IntentService的其它函数时,注意要通过super调用父类的对应的函数。

    界面设置两按钮:

    复制代码
     <Button
            android:id="@+id/btnStartIntentService"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="开始下载" >
        </Button>
    
        <Button
            android:id="@+id/btnStopIntentService"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="结束下载" >
        </Button>
    复制代码

    声明IntentServiceSub继承IntentService

    复制代码
    public class IntentServiceSub extends IntentService {
    
        private static final String TAG = "IntentServiceSub";
    
        public IntentServiceSub() {
            super("IntentServiceSub");
            Log.i(TAG, "=>IntentServiceSub");
        }
    
        /* (non-Javadoc)
         * @see android.app.IntentService#onCreate()
         */
        @Override
        public void onCreate() {
            Log.i(TAG, "=>onCreate");
            super.onCreate();
        }
    
        /* (non-Javadoc)
         * @see android.app.IntentService#onDestroy()
         */
        @Override
        public void onDestroy() {
            Log.i(TAG, "=>onDestroy");
            super.onDestroy();
        }
        
        @Override
        protected void onHandleIntent(Intent arg0) {
            Log.i(TAG, "IntentService 线程:"+Thread.currentThread.getId());
    Thread.sleep(2000);
    }
    复制代码

    页面按钮事件

    复制代码
            btnStartIntentService = (Button) this.findViewById(R.id.btnStartIntentService);
            btnStopIntentService = (Button) this.findViewById(R.id.btnStopIntentService);
    
    private OnClickListener listener = new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                
                case R.id.btnStartIntentService:
                    Log.i(TAG, "主线程ID:"+Thread.currentThread.getId());
                    if (mServiceIntent == null)
                        mServiceIntent = new Intent(AndroidServiceActivity.this,IntentServiceSub.class);
                    startService(mServiceIntent);
                    break;
                case R.id.btnStopIntentService:
                    Log.i(TAG, "btnStopIntentService");
                    if (mServiceIntent != null) {
                        stopService(mServiceIntent);
                        mServiceIntent = null;
                    }
                    break;
                }
    
            }
        };
    复制代码
  • 相关阅读:
    知乎
    热磁性储存系统转载
    超薄纳米纸张 比钢强250倍转载
    TFT LCD数据存储为BMP文件的C语言代码
    GPS NMEA0183协议详解 转载
    JPG文件结构分析转载
    SD/TF 引脚
    调试错误:No Algorithm found for(转载)
    STM32 USB IAP 步骤
    追踪“善恶有报” 解开生命健康福寿秘密(转载)
  • 原文地址:https://www.cnblogs.com/songyao/p/4142057.html
Copyright © 2011-2022 走看看