在用户与app的交互中,用户看到的只是屏幕上显示的东西,至于这些东西是通过什么方式获取、显示出来的,用户是不知道的。Services是运行在后台的服务,我们可以在Activity里面用startService()或者bindService()的方法启动它。
一、startService()与bindService()区别:
如果我们在某个Activity中使用startActivity()的方法启动service,那么service启动以后就用启动它的Activity没有联系了,就算后面你的Activity销毁了,service还是在后台运行。但是如果我们用bindService()的方法启动service,那么就将Activity与Service绑定在一起,只要你的Activity销毁(finish)了,service也就调用onUnbind()和onDestory()进行销毁。
二、看一下Services的简单例子:
1、新建一个名为Service的工程:
打开AndroidMainfest.xml,在<application/>标签前面加上
<service android:name=".MyService"/>
Service必须在该xml文件里面注册才能使用。
2、右键单击java,选择new->javaclass,新建名为MyService的类:
package learn.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.widget.Toast;
/**
* Created by Administrator on 2016/3/29.
*/
public class MyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent,int flags,int startid)
{
Toast.makeText(this,"启动了Service",Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy()
{
super.onDestroy();
Toast.makeText(this,"停止了Service",Toast.LENGTH_LONG).show();
}
}
在activity_main.xml里面布局两个按钮:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动service"
android:onClick="startservice"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止service"
android:onClick="stopservice"/>
</LinearLayout>
在MainActivity.java里面编写startservice和stopservice函数:
package learn.service;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startservice(View view)
{
startService(new Intent(getBaseContext(),MyService.class));
}
public void stopservice(View view)
{
stopService(new Intent(getBaseContext(),MyService.class));
}
}
先后点击启动Service、停止Service,会有启动、停止提示,如果先点击停止Service则没有提示。