快速使用StartService
1.Service定义
- Android四大组件之一
- Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。
- 服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。
- 组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)
2. 创建两个按钮:
启动按钮以及停止按钮
2.1 创建一个Service文件
2.2 编写server部分:
package com.example.servicebasic;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onDestroy() {
Log.i("Service", "onDestroy()");
super.onDestroy();
}
@Override
public void onCreate() {
Log.i("Service", "onCreate()");
super.onCreate();
}
public int onStratCommand(Intent intent,int flags,int startId) {
Log.i("Service", "onStratCommand()");
return super.onStartCommand(intent,flags,startId);
}
}
2.3 关键步骤
2.3.1onCreate()创建服务:
顺便在控制台输出创建信息,方便我们查看
@Override
public void onCreate() {
Log.i("Service", "onCreate()");
super.onCreate();
}
2.3.2 onDestroy()销毁服务
顺便在控制台输出销毁信息,方便我们查看
@Override
public void onDestroy() {
Log.i("Service", "onDestroy()");
super.onDestroy();
}
2.3.3 onStartCommand()允许组件启动服务
顺便在控制台输出组件启动服务信息,方便我们查看
public int onStratCommand(Intent intent,int flags,int startId) {
Log.i("Service", "onStratCommand()");
return super.onStartCommand(intent,flags,startId);
}
3. 编写项目启动文件:
3.1 ActivityMain.java
package com.example.servicebasic;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button startService;
private Button stopService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
startService=findViewById(R.id.startService);
startService.setOnClickListener(this);
stopService=findViewById(R.id.stopService);
stopService.setOnClickListener(this);
}
public void onClick(View v){
Intent intent=new Intent(MainActivity.this, MyService.class);
switch (v.getId()){
default:
break;
case R.id.startService:
startService(intent);
break;
case R.id.stopService:
stopService(intent);
break;
}
}
}
3.2 点击按钮启动相应的后台服务:
通过按钮点击监听开启不同服务:
public void onClick(View v){
Intent intent=new Intent(MainActivity.this, MyService.class);
switch (v.getId()){
default:
break;
case R.id.startService:
startService(intent);
break;
case R.id.stopService:
stopService(intent);
break;
}
}
4.效果
可以看到我们的效果如下:
可以看到我点击了两个按钮控制台的输出:
|