Mainactivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 启动IntentService
public void startIntentService(View view) {
Intent intent = new Intent(this, MyIntentService.class);
intent.putExtra("msg", "来自Activity的数据");
startService(intent);
}
}
- IntentService继承自Service
- 内部封装了子线程,实现耗时操作
- onStartCommand()方法的返回值必须为super,将intent传递到子线程中处理
- onHandleIntnet()方法在子线程中有序处理接收到的intent必须有序,想要无序的不能用该方法.
- 当所有Intent处理完毕时,会自动销毁
- *
public class MyIntentService extends IntentService {
// 内部封装的子线程的名字
public MyIntentService() {
super("thread_name");
}
@Override
public void onCreate() {
super.onCreate();
Log.d("1622", "create");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("1622", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}必须是是super好把intent传给下面的方法
// 处理intent时执行该方法//来自上面的那个方法
// 该方法自动开启子线程处理数据
@Override
protected void onHandleIntent(Intent intent) {
Log.d("1622", "onHandleIntent : " + Thread.currentThread().getName());
try {
Thread.sleep(2 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("1622", "onDestroy");
}
}
布局
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动IntentService"
android:onClick="startIntentService"/>
点下面绿的自动注册清单
<service
android:name=".service.MyIntentService"
android:exported="false"></service>