Service----样例一

来源:互联网 发布:doom4优化 编辑:程序博客网 时间:2024/05/16 12:52

Service

   Service是Android的四大组件之一,作用非常的重要(至于什么重要就不说了)。这里我提供一个样例,这个样例提供了startService和bindService二种开启线程的方式

样例代码:

   关键代码:

1.Sample_2_6.java

public class Sample_2_6 extends Activity {OnClickListener myOnClickListener;//监听方法ServiceConnection connection;//得到ServiceConnection引用Button startService;//startService按钮Button stopService;//stopService按钮Button bindService;//bindService按钮Button unbindService;//unbindService按钮    public void onCreate(Bundle savedInstanceState) {//重写的onCreate方法        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                connection = new ServiceConnection(){public void onServiceConnected(ComponentName arg0, IBinder arg1){}public void onServiceDisconnected(ComponentName name){}        };                startService = (Button) findViewById(R.id.startService);        stopService = (Button) findViewById(R.id.stopService);        bindService = (Button) findViewById(R.id.bindService);        unbindService = (Button) findViewById(R.id.unbindService);                myOnClickListener = new OnClickListener(){public void onClick(View v) {Intent intent = new Intent(Sample_2_6.this,MyService.class);if(v == startService){startService(intent);bindService.setEnabled(false);unbindService.setEnabled(false);}else if(v == stopService){stopService(intent);bindService.setEnabled(true);unbindService.setEnabled(true);}else if(v == bindService){bindService(intent, connection, BIND_AUTO_CREATE);startService.setEnabled(false);stopService.setEnabled(false);}else if(v == unbindService){unbindService(connection);startService.setEnabled(true);stopService.setEnabled(true);}}        };                startService.setOnClickListener(myOnClickListener);        stopService.setOnClickListener(myOnClickListener);        bindService.setOnClickListener(myOnClickListener);        unbindService.setOnClickListener(myOnClickListener);    }}

2.MyService.java

public class MyService extends Service{MyThread myThread;//线程的引用public void onCreate() {//重写的onCreate方法Log.d("MyService", "onCreate");//打印日志super.onCreate();}public void onStart(Intent intent, int startId) {//重写的onStart方法Log.d("MyService", "onStart");//打印日志if(myThread == null){myThread = new MyThread();myThread.start();//启动线程}super.onStart(intent, startId);}public IBinder onBind(Intent arg0) {//重写的onBind方法Log.d("MyService", "onBind");//打印日志if(myThread == null){myThread = new MyThread();myThread.start();//启动线程}return null;}public boolean onUnbind(Intent intent) {//重写的onUnbind方法Log.d("MyService", "onUnbind");//打印日志if(myThread != null){myThread.flag = false;myThread = null;//释放线程}return super.onUnbind(intent);}public void onDestroy() {//重写的onDestroy方法Log.d("MyService", "onDestroy");//打印日志if(myThread != null){myThread.flag = false;myThread = null;}super.onDestroy();}public class MyThread extends Thread{boolean flag = true;//循环标志位int i = 0;public void run(){while(flag){Log.d("MyService", "i = " + (i++));//打印日志try{Thread.sleep(1000);//睡眠1秒钟}catch(Exception e){//捕获异常e.printStackTrace();//打印异常}}}}}


源码下载地址:

    http://download.csdn.net/detail/hfreeman2011/5041824

原创粉丝点击