ANDROID定期服务呼叫

ANDROID定期服务呼叫,android,android-asynctask,android-service,Android,Android Asynctask,Android Service,我将首先解释我目前正在使用的应用程序 我正在开发一个Android应用程序,它显示模式,模式由任务组成,任务可以有子任务等等。这是为那些有权威的孩子设计的,这款应用的目的是激发孩子的独立性 我的看法:该应用程序每晚对服务器进行一次servicecall,并在第二天收到一个新的JSON文件和模式。该JSON文件需要解析为正确的域对象。这个应用程序有更多的功能,但这超出了我的问题范围 我在执行上述问题的正确解决方案时遇到困难。 我认为我需要做的是: 通过AlarmManager设置每晚重复的警报。当

我将首先解释我目前正在使用的应用程序

我正在开发一个Android应用程序,它显示模式,模式由任务组成,任务可以有子任务等等。这是为那些有权威的孩子设计的,这款应用的目的是激发孩子的独立性

我的看法:该应用程序每晚对服务器进行一次servicecall,并在第二天收到一个新的JSON文件和模式。该JSON文件需要解析为正确的域对象。这个应用程序有更多的功能,但这超出了我的问题范围

我在执行上述问题的正确解决方案时遇到困难。 我认为我需要做的是:

通过AlarmManager设置每晚重复的警报。当警报发出时,AlarmReceiver启动异步任务。在asyncTask中,需要请求并解析JSON

这种思维方式正确吗? 我也读过关于服务的文章,它们可以在后台执行任务。但当手机关机时,服务就会停止

我应该为异步任务实现激活服务吗?或者我应该在闹钟响的时候启动服务


我希望我清楚地知道我在为这个问题实施正确的解决方案时遇到的问题。

使用BOOT\u COMPLETED Receiver并在内部启动您的活动

编辑:使用如下代码

public class MyBroadcastreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Intent startIntent = new Intent(context, MyActivity.class);
    context.startActivity(startIntent);
}
} 在你的舱单上

<receiver android:name="com.example.MyBroadcastReceiver">  
<intent-filter>  
    <action android:name="android.intent.action.BOOT_COMPLETED" />  
</intent-filter>  


对于基本功能,是的,您概述的功能将起作用,我在我的应用程序上也做了类似的操作。警报触发一个服务,该服务在夜间在异步任务中进行下载/解析。太好了。让它在重新启动后重新启动,这是一个稍微不同的答案。非常感谢,也感谢您指出服务应该在重新启动后启动。还有一个问题:我应该在asyncTask完成后停止服务,还是应该给android系统这个选项?我会让服务继续运行。如果设置了警报,它应该每天在同一时间唤醒并执行异步任务,如果服务已经启动,它将重新启动。如果没有,它将启动服务