Service是安卓四大组件之一,个人觉得Service的使用还是比较简单的额,可以理解为看不见的Activity,因为Service的使用和Activity十分接近。启动啊,生命周期等,都十分简单。
下面我们通过简单的代码来学习Service。
首先是Service的文件,MyService.java,很简单,和Activity一样,继承一个类,重写相关的方法就好了,同时,要注意,四大组件都是要在清单文件里面注册的
<service android:name=".MyService" />
package com.example.servicedemo; import android.app.Service; import android.content.Intent; import android.os.IBinder; /** *************************************************************** * * @版权 LinFeng * * @作者 LinFeng * * @版本 1.0 * * @创建日期 2016-6-8 * * @功能描述 ***************************************************************** */ public class MyService extends Service{ /** * Service中唯一的抽象方法,必须在子类中实现 */ @Override public IBinder onBind(Intent intent) { return null; } /** * 服务创建的时候调用 */ @Override public void onCreate() { super.onCreate(); } /** * 每一次服务启动的时候调用,这个案例中,每点击一次start service都会执行的方法 * oncreate只是第一次点击的时候执行 */ @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } /** * 服务销毁的时候调用 */ @Override public void onDestroy() { super.onDestroy(); } }
然后是MainActivity文件和他的布局文件
package com.example.servicedemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onclick(View v) { switch (v.getId()) { case R.id.bt_start : /** * 服务和活动一样,都是用Intent来启动的, * 其实可以把服务理解为没有界面的活动 */ Intent startintent = new Intent(this,MyService.class); startService(startintent); break; case R.id.bt_stop : Intent stopintent = new Intent(this,MyService.class); stopService(stopintent); break; default : break; } } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.servicedemo.MainActivity" > <Button android:onClick="onclick" android:id="@+id/bt_start" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开启服务" /> <Button android:onClick="onclick" android:id="@+id/bt_stop" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="关闭服务" /> </LinearLayout>
然后就是运行截图了,注意,返回去找设置的时候,要按下home键,而不是返回键哦。