我需要一个示例代码或示例,它显示了正确的服务实现。我希望在一段时间后运行代码,比如3-4小时。并且该过程应该在后台运行,甚至设备也会重新启动。
我已经提出了bootreciever
和boot_completed
选项,但实际上不知道如何实现它或async
函数让正在运行的进程一次又一次地运行一段时间后。
清单
<service
android:name=".Myservice"
android:label="My Service" >
<intent-filter>
<action android:name="com.app.ader.Myservice" />
</intent-filter>
</service>
<receiver android:name="com.app.ader.StartMyServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Myservice.java
public class Myservice extends Service {
String tag="TestService";
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();
Log.i(tag, "Service created...");
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.i(tag, "Service started...");
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
StartMyServiceAtBootReceiver.java
public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startServiceIntent = new Intent(context, Myservice.class);
context.startService(startServiceIntent);
}
}
我的服务在启动后运行...但我甚至需要在安装应用程序后运行该服务。 Dunno如何实现那个nd以及报警管理器间隔3-4小时
答案 0 :(得分:1)
你走在正确的道路上。为代码执行创建服务。还要创建一个在启动完成时触发的接收器,然后从中启动服务。还可以使用Alarm Manager的setRepeating
方法重复调用该服务。
逐一开始
1)创建简单服务
2)创建启动完成后启动服务的Receiver。
3)最后创建警报管理器
答案 1 :(得分:0)
1)在你的元素中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2)在你的元素中(确保为BroadcastReceiver使用完全限定的[或相对]类名称):
<receiver android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
在MyBroadcastReceiver.java中:
package com.example;
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startServiceIntent = new Intent(context, MyService.class);
startServiceIntent.addaction("com.app.ader.Myservice");
context.startService(startServiceIntent);
}
}
3)在您的服务中启动服务OnStart()中的Alarmmanager。希望这能澄清您的事情