-
Notifications
You must be signed in to change notification settings - Fork 0
独立的service进程退出
initLiu edited this page Aug 3, 2016
·
1 revision
如果service在一个独立进程中,service由startservice和bindservice启动。 在退出service的时候,先stopservice然后killprocess,如果此时还有其他进程bind到service上,service在killprocess后会重启 测试代码如下:
package com.lzp.test6;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.Process;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e("Test", "onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.e("Test", "onServiceDisconnected");
}
};
Button btnClose;
Intent serviceIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnClose = (Button) findViewById(R.id.close);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeMSFService();
}
});
serviceIntent = new Intent(this, MSFService.class);
startService(serviceIntent);
bindService(serviceIntent, conn, Context.BIND_AUTO_CREATE);
}
private void closeMSFService() {
finish();
int msfPid = -1;
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : processInfos) {
if (info.processName.endsWith(":MSFservice")) {
msfPid = info.pid;
break;
}
}
stopService(serviceIntent);
if (msfPid != -1) {
Process.killProcess(msfPid);
}
System.exit(-1);
Log.e("Test","close msf");
}
}