zoukankan      html  css  js  c++  java
  • Android Service服务的生命周期

    与activity类似,服务也存在生命周期回调方法,你可以实现这些方法来监控服务的状态变化,并在适当的时机执行一些操作。 以下代码提纲展示了服务的每个生命周期回调方法: 

    public class ExampleService extends Service {
        int mStartMode;       // 标识服务被杀死后的处理方式
        IBinder mBinder;      // 用于客户端绑定的接口
        boolean mAllowRebind; // 标识是否使用onRebind
    
        @Override
        public void onCreate() {
            // 服务正被创建
        }
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // 服务正在启动,由startService()调用引发
            return mStartMode;
        }
        @Override
        public IBinder onBind(Intent intent) {
            // 客户端用bindService()绑定服务
            return mBinder;
        }
        @Override
        public boolean onUnbind(Intent intent) {
            // 所有的客户端都用unbindService()解除了绑定
            return mAllowRebind;
        }
        @Override
        public void onRebind(Intent intent) {
            // 某客户端正用bindService()绑定到服务,
            // 而onUnbind()已经被调用过了
        }
        @Override
        public void onDestroy() {
            // 服务用不上了,将被销毁
        }
    }

    代码实例:

      LocalService.java

    package com.app.servicetest;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.Handler;
    import android.os.IBinder;
    import android.os.Message;
    import android.util.Log;
    import android.widget.Toast;
    
    public class LocalService extends Service { 
    	boolean flag = true;
    	int count=0; 
    	@Override//创建一个服务 继承自Service  重写 onBind方法
    	public IBinder onBind(Intent arg0) { 
    		//  不支持绑定,所以返回null
    		return null;
    	} 
    	//创建Hander
    	Handler handler = new Handler(){
    		public void handleMessage(android.os.Message msg) {
    			Toast.makeText(LocalService.this, count+"", Toast.LENGTH_SHORT).show();
    		};
    	};
    	@Override
    	public void onCreate() {
    		super.onCreate();  
    		new Thread(new Runnable() {
    
    			@Override
    			public void run() {
    				while(flag){  
    					try {
    						 Log.d("--------------", count+" ");   
    						 Message msg = new Message();
    						 handler.sendMessage(msg);	
    						 count++; 
    						 Thread.sleep(3000); 
    					} catch (InterruptedException e) { 
    						e.printStackTrace();
    					}
    				} 
    			}
    		}).start() ; 
    	}
    	
    	@Override
    	public void onDestroy() {	
    		Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); 
    		flag = false;
    		super.onDestroy();
    	}
    }
    
    MainActivity.java

    package com.app.servicetest;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    	Intent intent ;
    	Button button_start,button_stop;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState); 
    		setContentView(R.layout.activity_main);
    
    		button_start =   (Button) findViewById(R.id.button1);
    		button_stop =  (Button) findViewById(R.id.button2);
    
    		button_start.setText("创建服务");
    		button_stop.setText("Stop"); 
    
    		button_start.setOnClickListener(new View.OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) {
    				intent = new Intent(MainActivity.this, LocalService.class); 
    				//启动服务
    				startService(intent);
    				Toast.makeText(MainActivity.this, "启动", 0).show();
    			}
    
    		});
    		button_stop.setOnClickListener(new View.OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) { 
    				//停止 服务
    				stopService(intent);
    				Toast.makeText(MainActivity.this, "Stop", 0).show();
    			} 
    		});
    	} 
    }
    



  • 相关阅读:
    爬取中华网科技新闻
    爬取斗鱼图片
    链表09-开发可用链表(将链表变为对象数组)
    链表08-开发可用链表(数据删除)
    链表07-开发可用链表(修改指定索引内容)
    链表06-开发可用链表(根据索引取得数据)
    链表05-开发可用链表(判断某一个数据是否存在)
    链表05-开发可用链表(判断是否为空链表)
    链表04-开发可用链表(取得链表中保存的元素个数)
    链表03-开发可用链表(实现数据增加)
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697403.html
Copyright © 2011-2022 走看看