1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package com.service.demo;
- import java.util.List;
- import android.app.ActivityManager;
- import android.app.ActivityManager.RunningAppProcessInfo;
- import android.app.Service;
- import android.app.ActivityManager.RunningServiceInfo;
- import android.content.ComponentCallbacks;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.content.res.Configuration;
- import android.os.Handler;
- import android.os.IBinder;
- import android.os.RemoteException;
- import android.util.Log;
- import android.widget.Toast;
- /**
- *
- * @author hellogv
- *
- */
- public class Service1 extends Service {
- private String TAG = getClass().getName();
- // 用于判断进程是否运行
- private String Process_Name = "com.example.servicetest2:service2";
- /**
- *启动Service2
- */
- private StrongService startS2 = new StrongService.Stub() {
- @Override
- public void stopService() throws RemoteException {
- Intent i = new Intent(getBaseContext(), Service2.class);
- getBaseContext().stopService(i);
- }
- @Override
- public void startService() throws RemoteException {
- Intent i = new Intent(getBaseContext(), Service2.class);
- getBaseContext().startService(i);
- }
- };
- @Override
- public void onTrimMemory(int level){
- Toast.makeText(getBaseContext(), "Service1 onTrimMemory..."+level, Toast.LENGTH_SHORT)
- .show();
-
- keepService2();//保持Service2一直运行
-
- }
- @Override
- public void onCreate() {
- Toast.makeText(Service1.this, "Service1 onCreate...", Toast.LENGTH_SHORT)
- .show();
- keepService2();
- }
- /**
- * 判断Service2是否还在运行,如果不是则启动Service2
- */
- private void keepService2(){
- boolean isRun = Utils.isProessRunning(Service1.this, Process_Name);
- if (isRun == false) {
- try {
- Toast.makeText(getBaseContext(), "重新启动 Service2", Toast.LENGTH_SHORT).show();
- startS2.startService();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- return START_STICKY;
- }
- @Override
- public IBinder onBind(Intent intent) {
- return (IBinder) startS2;
- }
- }
|