这里是我的一个启动后自动停止的service  startBrew();
       // 创建Intent
           intent = new Intent();
          // 设置Action属性
          intent.setAction("com.qin.appsize.MY_SERVICE");
         
        //执行service
   // 执行定时器
   mTimer = new Timer();
   mTimerTask = new TimerTask() {
   String timeLimit=(String)brewTimeLabel.getText().toString();
       int i = Integer.parseInt(timeLimit.substring(0,timeLimit.length()-1))*60;
   public void run() {
   // 打印时间
   Log.d("AndroidTimerDemo", "timer:" + formatDate());
   // 设置一个自己停止的功能
    // 启动该Service
   startService(intent);
   if (i < 1) {
   stopService(intent);
   System.out.println("服务线程自动停止");
     mTimer.cancel();
   }
   System.out.println("服务线程倒计时:" + i);
   i--;
   }
   };
   mTimer.schedule(mTimerTask, 0, 1*1000);
       BrewClockActivity.this.finish();
      }
    }  这里是我的servicepackage com.qin.appsize;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class TimerService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
} @Override
public void onCreate() {
super.onCreate();
}
 public void onStart(Intent intent, int startId) {  
        Log.v("=========", "***** DaemonService *****: onStart");  
             // 这里可以做Service该做的事 
        
         System.out.println("我在做事!");
        }
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}

}
现在运行后是每一秒就执行一次onStart()方法 打印“我在做事!”
我想在 “我在做事!”那里做结束指定进程的功能 应该怎么做 也就是每一秒都在结束这个我指定的(例如指定一个闹钟程序)进程。
求大神指教 如何做结束进程serviceandroid

解决方案 »

  1.   

    你是想在service里面做某些动作对吧。
    你直接写代码不就行了,想做什么需要写自己的逻辑,比如启动另外一个程序,或者关闭另外一个程序。】】是否理解正确?
      

  2.   

    是的 现在问题是我试了几种关闭的方法 写入代码后 无法运行service 
    所以我主要是想问 1:在那个onStart方法中可以写结束指定进程的方法么
    2:有没有一些结束进程的例子 。谢谢 
      

  3.   

    直接在onstart里面做完事后调 stopSelf() or stopService()
      

  4.   

    怎么写结束进程呢? 有没有例子 谢谢 
    结束的话 在上面那个定时器里有  他自己到时间会结束的
    我前面试了几个方法 例如用这个 actManager.restartPackage("com.commonsware.Now");
    指定结束com.commonsware.Now包的进程  每一秒执行一次  但是运行不了  报错了  
    我是新手刚学android  大神指教啊
      

  5.   

    楼主无非就是想杀死指定的进程这个需求吧?
    1、杀死进程自己
    System.exit(0);
    android.os.Process.killProcess(android.os.Process.myPid());
    2、根据包名,杀死别的进程
    ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); 
    am.forceStopPackage("指定包名");
    需要在androidmanifest.xml中添加权限:
    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
    楼主应该是需要第二种。
      

  6.   

    哈哈
    感谢各位  搞定了  补充下6楼第二种方法的forceStopPackage是一个隐藏的方法无法直接调用
    所以需要用到反射         actManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
                
            Method method;
    try {
    method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);
        method.invoke ( actManager.getClass(), "com.android.camera");
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }