java实现守护进程的代码
时间: 2024-04-14 12:08:25 浏览: 76
以下是 Java 实现守护进程的代码:
```
public class DaemonThread implements Runnable {
private volatile boolean stop = false;
@Override
public void run() {
while (!stop) {
// 守护进程的任务
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void stop() {
this.stop = true;
}
}
public class Main {
public static void main(String[] args) {
DaemonThread daemonThread = new DaemonThread();
Thread thread = new Thread(daemonThread);
thread.setDaemon(true);
thread.start();
// 主线程的代码
}
}
```
相关问题
Java编写进程守护代码
以下是Java编写进程守护代码的示例:
```java
import java.io.IOException;
public class ProcessGuardian {
private static final String PROCESS_NAME = "myProcess";
public static void main(String[] args) {
while (true) {
try {
// Check if the process is running
Process process = Runtime.getRuntime().exec("pgrep " + PROCESS_NAME);
int exitCode = process.waitFor();
if (exitCode != 0) {
// If the process is not running, start it
Runtime.getRuntime().exec("myProcess");
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
// Wait for 5 seconds before checking again
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
该代码使用了一个无限循环来检查进程是否正在运行。它使用`Runtime.getRuntime().exec()`方法来执行`pgrep`命令来检查进程是否存在。如果进程不存在,则使用`Runtime.getRuntime().exec()`方法启动该进程。然后,它等待5秒钟,然后再次检查进程是否存在。这个过程一直持续下去,直到程序被手动停止。
Android AlarmManager怎么实现守护进程
Android中,可以使用AlarmManager来实现守护进程。具体实现步骤如下:
1. 创建一个Service,在Service中实现需要守护的业务逻辑。
2. 在Service的onStartCommand()方法中,启动一个定时器。
3. 使用AlarmManager定时启动Service,这样就可以保证Service一直在后台运行。
4. 在Service的onDestroy()方法中,重新启动Service,以保证Service一直在后台运行。
示例代码如下:
```java
public class GuardService extends Service {
private static final int INTERVAL = 60 * 1000; // 定时器间隔时间,60秒
private static final int REQUEST_CODE = 100; // 请求码
private static final String TAG = "GuardService"; // 日志标签
private AlarmManager mAlarmManager;
private PendingIntent mPendingIntent;
private Intent mIntent;
@Override
public void onCreate() {
super.onCreate();
mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mIntent = new Intent(this, GuardService.class);
mPendingIntent = PendingIntent.getService(this, REQUEST_CODE, mIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand");
// 启动定时器
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), INTERVAL, mPendingIntent);
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
// 重新启动Service
Intent intent = new Intent(this, GuardService.class);
startService(intent);
}
}
```
在AndroidManifest.xml文件中声明Service:
```xml
<service
android:name=".GuardService"
android:exported="false" />
```
这样就可以实现Android AlarmManager守护进程了。
阅读全文