1.代码:
- xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".IntentServiceActivity">
<Button
android:id="@+id/start_intent_service"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动intentService1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/bt_intent_service_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动intentService2"
app:layout_constraintBottom_toTopOf="@+id/bt_stop_intent_service"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/start_intent_service" />
</androidx.constraintlayout.widget.ConstraintLayout>
- java启动代码
@Override
public void onClick(View v) {
Intent intent=new Intent(IntentServiceActivity.this,MyIntentService.class);
switch (v.getId()) {
case R.id.start_intent_service:
intent.putExtra(UtilsConstants.intent_values,1);
break;
case R.id.bt_intent_service_2:
intent=new Intent(IntentServiceActivity.this,MyIntentService.class);
intent.putExtra(UtilsConstants.intent_values,2);
break;
}
startService(intent);
}
MyIntentService代码
android studio自带创建方式
1.
2.
public class MyIntentService extends IntentService {
private static final String TAG = "MyIntentService";
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
int values = intent.getIntExtra(UtilsConstants.intent_values,0);
if (values==1){
for (int i = 0; i < 100; i++) {
try {
Log.d(TAG, "onHandleIntent: "+values);
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}else if (values==2){
for (int i = 100; i < 200; i++) {
Log.d(TAG, "onHandleIntent: "+values);
}
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy: ");
}
}
声明:
<service
android:name="com.lapian.intentservice.MyIntentService"
android:exported="false"></service>
工具类:
/**
* @ClassName UtilsConstants
* @Description TODO
* @Author ${孙伟豪}
* @Date 2020/10/10 9:28
* @Version 1.0
*/
public class UtilsConstants {
public static String intent_values="values";
}
运行结果:
2.结论:
- 点击多次启动,它们会顺序执行
- 全部执行完,最后都会执行onDestroy
- 可以用于执行耗时操作
- 图解