【问题标题】:ANDROID Periodic servicecallANDROID 定期服务电话
【发布时间】:2014-02-04 20:38:26
【问题描述】:

我将首先解释我目前正在开发的应用程序。

我正在开发一个显示架构的 Android 应用程序,架构由任务组成,任务可以有子任务等等。我适合有自闭症的孩子,该应用的目的是激发孩子的独立性。

我的看法:应用每晚对服务器进行一次服务调用,然后接收一个带有第二天架构的新 JSON 文件。该 JSON 文件需要解析为正确的域对象。该应用程序具有更多功能,但这超出了我的问题范围。

我在为上述问题实施正确的解决方案时遇到了麻烦。 我认为我需要做的:

通过 AlarmManager 设置每晚重复的闹钟。当闹钟响起时,AlarmReceiver 会启动一个 Asynctask。在 asyncTask 中,需要请求和解析 JSON。

这种思维方式是正确的吗? 我还阅读了有关服务的信息,它们可以在后台执行任务。但是当手机关机时服务会停止。

我应该实施服务来激活异步任务吗?还是应该在闹钟响起时启动服务?

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

【问题讨论】:

  • 对于基本功能,是的,您概述的内容将起作用,我在我的应用程序上也做过类似的事情。警报会启动一项服务,该服务在夜间在异步任务中进行下载/解析。那很完美。重新启动后让它重新启动,这是一个略有不同的答案。

标签: android android-asynctask android-service


【解决方案1】:

使用 BOOT_COMPLETED Reciever 并在里面启动你的 Activity

编辑:使用如下代码

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 系统?
  • 我会让服务继续运行。如果设置了闹钟,它应该每天在同一时间醒来并执行异步任务,如果服务已经启动,它将重新启动。如果没有,它将启动服务
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多