您的位置:首页 > 其它

简单说明Service服务,使用Service

2017-01-06 17:07 543 查看
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。

我们都知道Activity能呈现一个用户界面,于用户进行交互,而在很多时候,我们的程序不需要于用户进行交互的页面,只需要在后台一直运行着,做一些事物的处理,例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,Http的网络通信以及与服务器保持一个推送的连接,所有这些活动都是在后台进行。这个时候我们就可以用到Service。接下来我们就来试试如何使用Service

先创建一个项目:



创建一个Service



创建成功后在activity_main.xml中,写两个按钮

<Button
android:id="@+id/btn_startservice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动service服务"/>

<Button
android:id="@+id/btn_stopservice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止service服务"/>


在MainActivity.calss 中

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

setContentView(R.layout.activity_main);

intent = new Intent(MainActivity.this,MyService.class);

//点击启动service按钮
findViewById(R.id.btn_startservice).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//启动服务
startService(intent);
}
});

findViewById(R.id.btn_stopservice).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//停止服务
stopService(intent);
}
});
}


}

接下来我们运行项目



这个时候我们打开手机的“设置”,,然后找到“应用”,选择正在运行的应用,发现我们的应用并没有在其中



然后我们进入项目点击“启动Service服务”,然后再进入设置:



这个时候发现我们的项目正在运行

然后再次回到项目点击 “停止Service服务”,然后进入设置:



发现我们的项目又没了,,

通过这种方式我们可以把我们的程序运行在后台。

接下来我们进一步了解一下,,Service在后台怎么运行的,如何运行我们自己的代码。

我们让service在后台不断输出一个语句,来观察

在MyService类中重写一个方法,onStartCommand 这个方法在外界执行startService时就会执行。

然后在onStartCommand方法中写一个线程,来让它不断输出一个语句,每输出一句就休眠1秒钟。来看代码:

public class MyService extends Service {

public MyService() {

}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service
82a8
.
throw new UnsupportedOperationException("Not yet implemented");
}

//这个会在外界执行startService时,就会执行
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(){
@Override
public void run() {
super.run();
while (true) {
Log.e("service","服务正在运行...");
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
return super.onStartCommand(intent, flags, startId);
}


}

效果:



这种时候我们停掉Activity,退出项目服务也不会停止。

这就是服务,我们可以用它在后台执行耗时操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: