首页 > 代码库 > 安卓 service 后台运行,activity 启动和停止service

安卓 service 后台运行,activity 启动和停止service

安卓activity界面,上面有两个按钮,一个是开始服务,一个是取消服务。

界面布局:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:paddingBottom="@dimen/activity_vertical_margin" 6     android:paddingLeft="@dimen/activity_horizontal_margin" 7     android:paddingRight="@dimen/activity_horizontal_margin" 8     android:paddingTop="@dimen/activity_vertical_margin" 9     tools:context=".MainActivity" >10 11     <TextView12         android:id="@+id/textView1"13         android:layout_width="wrap_content"14         android:layout_height="wrap_content"15         android:text="@string/hello_world" />16 17 18     <Button19         android:id="@+id/quxiao"20         android:layout_width="wrap_content"21         android:layout_height="wrap_content"22         android:layout_below="@+id/textView1"23         android:layout_marginTop="65dp"24         android:text="取消服务" />25 26     <Button27         android:id="@+id/bangding"28         android:layout_width="wrap_content"29         android:layout_height="wrap_content"30         android:layout_alignBaseline="@+id/quxiao"31         android:layout_alignBottom="@+id/quxiao"32         android:layout_alignParentRight="true"33         android:layout_marginRight="66dp"34         android:text="开始服务" />35 36 </RelativeLayout>

activity的代码:

 1 package com.example.test2; 2  3 import java.util.Date; 4  5 import com.example.application.GlobalVaries; 6  7 import android.os.Bundle; 8 import android.os.Handler; 9 import android.os.IBinder;10 import android.app.Activity;11 import android.content.ComponentName;12 import android.content.Intent;13 import android.content.ServiceConnection;14 import android.view.View;15 import android.view.View.OnClickListener;16 import android.widget.Button;17 import android.widget.TextView;18 import android.widget.Toast;19 20 public class MainActivity extends Activity {21     private boolean isBound = false;22     TextView labelView;23     private Intent serviceIntent;24     private GlobalVaries global;25 26     @Override27     protected void onCreate(Bundle savedInstanceState) {28         super.onCreate(savedInstanceState);29         setContentView(R.layout.activity_main);30         global = (GlobalVaries) getApplication();31         labelView = (TextView) findViewById(R.id.textView1);32         Button bindButton = (Button) findViewById(R.id.bangding);33         Button unbindButton = (Button) findViewById(R.id.quxiao);34         35         myMainRunning();36         // 绑定按钮37         bindButton.setOnClickListener(new OnClickListener() {38             @Override39             public void onClick(View v) {40                 if (!isBound) {41                     serviceIntent = new Intent(MainActivity.this,42                             MyService.class);43                     MainActivity.this.startService(serviceIntent);44                     isBound = true;45                     46                 }47             }48         });49         // 取消绑定按钮50         unbindButton.setOnClickListener(new View.OnClickListener() {51             @Override52             public void onClick(View v) {53                 onDestroy();54                 System.exit(0);55                 finish();56             }57         });58 59     }60     61     private void myMainRunning() {62         final Handler handler = new Handler();  63         Runnable runnable = new Runnable(){  64              @Override  65              public void run() {  66                  // 在此处添加执行的代码   67                  68                  long nowTime = global.getNowTime();69                  labelView.setText(""+new Date(nowTime));70                  handler.postDelayed(this, 500);// 50是延时时长   71              }   72          };   73          handler.postDelayed(runnable, 1000);// 打开定时器,执行操作   74          handler.removeCallbacksAndMessages(this);// 关闭定时器处理  75     }76 77     @Override78     protected void onDestroy() {79         MainActivity.this.stopService(serviceIntent);80         super.onDestroy();81     }82     83     84 }

服务部分的代码:

 1 package com.example.test2; 2  3 import java.util.Date; 4  5 import com.example.application.GlobalVaries; 6  7 import android.app.Service; 8 import android.content.Intent; 9 import android.os.Handler;10 import android.os.IBinder;11 import android.util.Log;12 import android.widget.Toast;13 14 public class MyService extends Service {15 16     private GlobalVaries global;17         18     @Override19     public void onCreate() {20         Log.i("start", "MyService onCreate");21         global = (GlobalVaries) getApplication();22         myrunningProgram();23         super.onCreate();24     }25 26     private void myrunningProgram() {27         final Handler handler = new Handler();  28             Runnable runnable = new Runnable(){  29                  @Override  30                  public void run() {  31                      // 在此处添加执行的代码   32                      Toast.makeText(MyService.this, ""+new Date(), 33                              Toast.LENGTH_SHORT).show();34                      global.setNowTime(System.currentTimeMillis());35                      handler.postDelayed(this, 2000);// 50是延时时长   36                  }   37              };   38              handler.postDelayed(runnable, 1000);// 打开定时器,执行操作   39              handler.removeCallbacksAndMessages(this);// 关闭定时器处理  40 41     }42 43     //开启绑定44     @Override45     public IBinder onBind(Intent arg0) {46         //为了使Service支持绑定,需要在Service类中重载onBind()方法,并在onBind()方法中返回Service对象47         Toast.makeText(this, "本地绑定:MyService", 48                 Toast.LENGTH_SHORT).show();49         System.out.println("----2");50         51         return null;52     }53 54     //取消绑定55     @Override56     public boolean onUnbind(Intent intent) {57         Toast.makeText(this, "取消本地绑定:MyService", 58                              Toast.LENGTH_SHORT).show();  59         System.out.println("----3");60         return false;61     }62 63     64 }

根据需求可以修改相应部分的代码。以上代码就是为了实现自己的需求。

安卓 service 后台运行,activity 启动和停止service