今天在网站看了一系列例子。太棒了。。。
我收藏了哦。
实现了 Android 中常见的许多服务,下面是实现的截图
接下来,以源代码的方式分析这个例子
1.MainActivity--主界面
这个类主要是实现用户所看到的这个Activity,其中包含了一系列的按钮,用户点击按钮执行相应的动作,所以在这个类中主要是对按钮的定义和对按钮绑定相应的监听器,下面是实现的代码:
复制代码
2.启动服务按钮这个类实现的是第一个按钮的功能,在这个类中新开了一个线程,并每隔一秒打印出一行日志代码如下:
复制代码
3.绑定服务服务有两种实现的方法:1.startService,启动服务,这时需要程序员管理服务的生命周期2.bindService,绑定服务,此时Service与Activity绑定在一起下面是实现的代码:
复制代码
4.发送广播使用sendBroadcast,向一个Action发送广播,并由相应的广播接收器接收并执行相应的动作实现的代码如下:4.1 打开广播服务
复制代码
未完,待续。。。。。。
我收藏了哦。
实现了 Android 中常见的许多服务,下面是实现的截图
接下来,以源代码的方式分析这个例子
1.MainActivity--主界面
这个类主要是实现用户所看到的这个Activity,其中包含了一系列的按钮,用户点击按钮执行相应的动作,所以在这个类中主要是对按钮的定义和对按钮绑定相应的监听器,下面是实现的代码:
- package lovefang.stadyService;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Button;
- import android.view.View;
- import android.content.Intent;
- import android.util.Log;
- /**这是使用后台服务的学习例子*/
- public class MainStadyServics extends Activity {
- /**参数设置*/
- Button startServiceButton;// 启动服务按钮
- Button shutDownServiceButton;// 关闭服务按钮
- Button startBindServiceButton;// 启动绑定服务按钮
- Button sendBroadcast;// 使用广播
- Button notificationButton;// 使用通知功能
- Button alarmButton;// 使用闹钟
- Button handlerButton;// 使用handler
- Button asyncButton;// 使用异步加载
- Button phoneStateButton;// 查看手机状态
- Button callphoneButton;// 拨打电话
- Button vibratorButton;// 使用震动
- CountService countService;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.v("MainStadyServics", "setContentView");
- setContentView(R.layout.main);
- getWidget();
- regiestListener();
- }
- /**获得组件*/
- public void getWidget(){
- startServiceButton = (Button)findViewById(R.id.startServerButton);
- startBindServiceButton = (Button)findViewById(R.id.startBindServerButton);
- shutDownServiceButton = (Button)findViewById(R.id.sutdownServerButton);
- sendBroadcast = (Button)findViewById(R.id.sendBroadcast);
- notificationButton = (Button)findViewById(R.id.notification);
- alarmButton = (Button)findViewById(R.id.alarm);
- handlerButton = (Button)findViewById(R.id.handler);
- asyncButton = (Button)findViewById(R.id.async);
- phoneStateButton = (Button) findViewById(R.id.phonestate);
- callphoneButton = (Button) findViewById(R.id.callphone);
- vibratorButton = (Button) findViewById(R.id.vibrator);
- }
- /**为按钮添加监听*/
- public void regiestListener(){
- startServiceButton.setOnClickListener(startService);
- shutDownServiceButton.setOnClickListener(shutdownService);
- startBindServiceButton.setOnClickListener(startBinderService);
- sendBroadcast.setOnClickListener(broadcastReceiver);
- notificationButton.setOnClickListener(notification);
- alarmButton.setOnClickListener(startAlarm);
- handlerButton.setOnClickListener(handler);
- asyncButton.setOnClickListener(async);
- phoneStateButton.setOnClickListener(phonestate);
- callphoneButton.setOnClickListener(callphoneEvent);
- vibratorButton.setOnClickListener(vibrator);
- }
- /**启动服务的事件监听*/
- public Button.OnClickListener startService = new Button.OnClickListener(){
- public void onClick(View view){
- /**单击按钮时启动服务*/
- Intent intent = new Intent(MainStadyServics.this,CountService.class);
- startService(intent);
- Log.v("MainStadyServics", "start Service");
- }
- };
- /**关闭服务*/
- public Button.OnClickListener shutdownService = new Button.OnClickListener(){
- public void onClick(View view){
- /**单击按钮时启动服务*/
- Intent intent = new Intent(MainStadyServics.this,CountService.class);
- /**退出Activity是,停止服务*/
- stopService(intent);
- Log.v("MainStadyServics", "shutDown serveice");
- }
- };
- /**打开绑定服务的Activity*/
- public Button.OnClickListener startBinderService = new Button.OnClickListener(){
- public void onClick(View view){
- /**单击按钮时启动服务*/
- Intent intent = new Intent(MainStadyServics.this,UseBrider.class);
- startActivity(intent);
- Log.v("MainStadyServics", "start Binder Service");
- }
- };
- /**打开广播学习的按钮*/
- public Button.OnClickListener broadcastReceiver = new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this,UseBroadcast.class);
- startActivity(intent);
- Log.v("MainStadyServics","start broadcast");
- }
- };
- /**打开通知*/
- public Button.OnClickListener notification = new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseNotification.class);
- startActivity(intent);
- Log.v("MainStadyService ","start Notification");
-
- }
- };
- /**使用闹钟*/
- public Button.OnClickListener startAlarm = new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseAlarmManager.class);
- startActivity(intent);
- Log.v("MainStadyService ","start alarm");
-
- }
- };
- public Button.OnClickListener handler= new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseHandleMessage.class);
- startActivity(intent);
- Log.v("MainStadyService ","start handle");
- }
- };
- public Button.OnClickListener async= new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseAsyncTask.class);
- startActivity(intent);
- Log.v("MainStadyService ","start handle");
- }
- };
- public Button.OnClickListener phonestate= new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UsePhoneState.class);
- startActivity(intent);
- Log.v("MainStadyService ","start phonestate");
- }
- };
- public Button.OnClickListener callphoneEvent= new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseActionCall.class);
- startActivity(intent);
- Log.v("MainStadyService ","start callphone");
- }
- };
- public Button.OnClickListener vibrator= new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent(MainStadyServics.this, UseVibrator.class);
- startActivity(intent);
- Log.v("MainStadyService ","start callphone");
- }
- };
- /***/
- protected void onDestroy(){
- super.onDestroy();
- Intent intent = new Intent(MainStadyServics.this,CountService.class);
- /**退出Activity是,停止服务*/
- stopService(intent);
- }
-
-
- }
2.启动服务按钮这个类实现的是第一个按钮的功能,在这个类中新开了一个线程,并每隔一秒打印出一行日志代码如下:
- package lovefang.stadyService;
- /**引入包*/
- import android.app.Service;// 服务的类
- import android.os.IBinder;
- import android.os.Binder;
- import android.content.Intent;
- import android.util.Log;
- /**计数的服务*/
- public class CountService extends Service{
- /**创建参数*/
- boolean threadDisable ;
- int count;
-
- public IBinder onBind(Intent intent){
- return null;
- }
- public void onCreate(){
- super.onCreate();
- /**创建一个线程,每秒计数器加一,并在控制台进行Log输出*/
- new Thread(new Runnable(){
- public void run(){
- while(!threadDisable){
- try{
- Thread.sleep(1000);
- }catch(InterruptedException e){
-
- }
- count++;
- Log.v("CountService","Count is"+count);
- }
- }
- }).start();
- }
- public void onDestroy(){
- super.onDestroy();
- /**服务停止时,终止计数进程*/
- this.threadDisable = true;
- }
- public int getConunt(){
- return count;
- }
- class ServiceBinder extends Binder{
- public CountService getService(){
- return CountService.this;
- }
- }
- }
- package lovefang.stadyService;
- /**引入包*/
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.os.Bundle;
- import android.os.IBinder;
- import android.util.Log;
-
- /**通过bindService和unBindSerivce的方式启动和结束服务*/
- public class UseBrider extends Activity {
- /**参数设置*/
- CountService countService;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(new UseBriderFace(this));
- Intent intent = new Intent(UseBrider.this,CountService.class);
- /**进入Activity开始服务*/
- bindService(intent, conn, Context.BIND_AUTO_CREATE);
-
- }
- private ServiceConnection conn = new ServiceConnection(){
- /**获取服务对象时的操作*/
- public void onServiceConnected(ComponentName name, IBinder service) {
- // TODO Auto-generated method stub
- countService = ((CountService.ServiceBinder)service).getService();
-
- }
- /**无法获取到服务对象时的操作*/
- public void onServiceDisconnected(ComponentName name) {
- // TODO Auto-generated method stub
- countService =null;
- }
-
-
- };
- protected void onDestroy(){
- super.onDestroy();
- this.unbindService(conn);
- Log.v("MainStadyServics", "out");
- }
- }
- package lovefang.stadyService;
- /**引入包*/
- import android.view.View;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.widget.Button;
- /**使用Broadcast,这是一个发送广播的类*/
- public class UseBroadcast extends Activity{
- /**创建参数*/
- private Button sendBroadcast;
- /**创建Activity*/
- public void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.broadcast);// 使用布局文件
- getView();
- sendBroadcast.setOnClickListener(sendBroadcastClick);// 添加事件监听
- }
- public void getView(){
- sendBroadcast = (Button)findViewById(R.id.sendBroadcast);
- }
- /**创建事件监听*/
- public Button.OnClickListener sendBroadcastClick = new Button.OnClickListener(){
- public void onClick(View view){
- Intent intent = new Intent();// 创建意图
- intent.putExtra("CONTENT","This is a Braodcast demo");// 设置广播的内容
- intent.setAction("lovefang.stadyService");// 设置广播的Action
- sendBroadcast(intent);
- }
- };
-
- }
未完,待续。。。。。。