发布网友
共1个回答
热心网友
第一步:把MarsDaemon下载解压后,把LibMarsdaemon项目作为Library项目导入到自己项目中,导入方法:File–>New–>New Mole–>Import Gradle Project然后选择LibMarsdaemon即可。当然还是要在项目中Open Mole Settings中进行设置才行。
第二步:编写两个不同进程的Service和两个BroadCastReceiver并注册到AndroidManifest.xml中,进程名字自定义。(其中一个Service是需要常驻的进程service,需要创建一个和他同进程的BroadCastReceiver。再另外一个进程中创建一个Service和一个BroadCastReceiver。)
编写自定义Application代码:
//自定义Application要继承自DaemonApplication,实现其getDaemonConfigurations方法
public class GlobalApp extends DaemonApplication {
private static GlobalApp instance;
public static GlobalApp getInstance() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
instance=this;
//各种初始化
}
@Override
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
//在这个方法使用到我们编写的两个Service及BroadCastReceiver
@Override
protected DaemonConfigurations getDaemonConfigurations() {
//PushService是项目中需要常驻的Service
//AlarmReceiver与PushService在同一个进程
DaemonConfigurations.DaemonConfiguration configuration1 = new DaemonConfigurations.DaemonConfiguration("com.innopro.bamboo:process1", PushService.class.getCanonicalName(), AlarmReceiver.class.getCanonicalName());
DaemonConfigurations.DaemonConfiguration configuration2 = new
// MessageService和 NetworkReceiver是在统一进程的辅助类,不用实现功能。 DaemonConfigurations.DaemonConfiguration("com.innopro.bamboo:process2", MessageService.class.getCanonicalName(), NetworkReceiver.class.getCanonicalName());
//return new DaemonConfigurations(configuration1, configuration2);//listener can be null
// return new DaemonConfigurations(configuration1, configuration2);//这种方式也可以
return new DaemonConfigurations(configuration1, configuration2, new MyDaemonListener());
}
class MyDaemonListener implements DaemonConfigurations.DaemonListener {
@Override
public void onPersistentStart(Context context) {
}
@Override
public void onDaemonAssistantStart(Context context) {
}
@Override
public void onWatchDaemonDaed() {
}
}
第三步:在AndroidManifest.xml中注册Service及BroadCastReceiver,记得要添加process:
<service android:name="xx.PushService" android:process=":process1"/>
<receiver android:name="xx.AlarmReceiver" android:process=":process1"/>
<service android:name="xx.MessageService"android:process=":process2" />
<receiver android:name="xx.AlarmReceive android:process=":process2"/>