package com.mystudy.kibi.networktype;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.util.List;
/**
* 程序使用Activity作为Service的访问者,该Activity的界面包含两个按钮,
* 一个按钮用于启动Service,一个按钮用于关闭Service.
*/
public class MainActivity extends AppCompatActivity {
String action = "com.mystudy.kibi.service.TEST_SERVICE";
Intent intent = new Intent();
Intent eintent;
Button start_service_btn;
Button stop_service_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDate();
initView();
initClik();
}
private void initDate(){
intent.setAction(action);
// eintent = new Intent(createExplicitFromImplicitIntent(this,intent));
intent.setPackage(this.getPackageName());
}
private void initView(){
start_service_btn = (Button) findViewById(R.id.start_service_btn);
stop_service_btn = (Button) findViewById(R.id.stop_service_btn);
}
private void initClik(){
start_service_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.startService(intent);
}
});
stop_service_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.stopService(intent);
}
});
}
// public static Intent createExplicitFromImplicitIntent(Context context, Intent implicitIntent) {
// PackageManager pm = context.getPackageManager();
// List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0);
// if (resolveInfo == null || resolveInfo.size() != 1) {
// return null;
// }
// ResolveInfo serviceInfo = resolveInfo.get(0);
// String packageName = serviceInfo.serviceInfo.packageName;
// String className = serviceInfo.serviceInfo.name;
// ComponentName component = new ComponentName(packageName, className);
// Intent explicitIntent = new Intent(implicitIntent);
// explicitIntent.setComponent(component);
// return explicitIntent;
// }
}
启动、关闭Service十分简单,调用Context里定义的startService()、stopService()方法即可启动、关闭Service。
注意:每当Service被创建时会回调onCreat()方法,每次Service被调用都会回调onStartCommand()方法。
在测试过程中发现,Android5.0中Service的Intent一定要显性声明,不然会报 "Service Intent must be explicit"错。
_ ( :3 」 )_ 待续。。。