2015-10-07 159 views
-2

我想创建一个(测试)应用程序,该应用程序在后台每小时执行一次命令(例如,编辑文件或显示调试消息)。Android |以编程方式运行命令

假设应用程序与系统启动

  • 我怎样才能做到这一点开始?
  • 应用必须始终保持运行状态吗?
+0

*该应用程序必须始终运行*祝你好运。用户可以终止您的应用程序,只要他想 –

+0

[如何每小时执行一项任务?](http://stackoverflow.com/questions/10630365/how-to-execute-one-task-every-hour ) –

+0

我表达得很糟糕,我的意思是应用程序不应该保留在后台,这是一个问题。对不起,我没有找到这个说法。 –

回答

0

请使用alarmmanager使用服务功能来实现此目的。

为如:

private void setAlarmManager() { 
    Intent intent = new Intent(this, AlarmReceiver.class); 
    PendingIntent sender = PendingIntent.getBroadcast(this, 2, intent, 0); 
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
    long l = new Date().getTime(); 
    if (l < new Date().getTime()) { 
     l += 86400000; // start at next 24 hour 
    } 
    am.setRepeating(AlarmManager.RTC_WAKEUP, l, 86400000, sender); // 86400000 
} 

Source

+0

而不是复制粘贴答案,只是标记重复 –

+0

意图不是复制粘贴。回答准确的点以避免耗时 – AndroidEnthusiastic

+0

什么是“发件人”?我想检查一些变量并执行一个函数/脚本.. –

-1

,使您的应用程序启动时的设备引导完成后你必须创建一个扩展接收器一类。 在清单中声明你的类像这样

<receiver android:name=".ClassName"> 
<intent-filter > 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
</intent-filter> 
</receiver> 

而且不要忘记使用许可

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

编写以下到您的接收器类的onReceive覆盖方法

Intent intent= new Intent(context, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(myIntent); 

如果你想在你的后台运行某些东西,请使用Services

+0

OP不想知道如何在启动时启动他的应用程序 - > *假设应用程序以系统启动开始* –

+0

然后善待投票问题讨论不是我的回答....你知道一切并不意味着我们的答案是错误的,并有资格申请投票... –

+0

如果你的回答没有解决问题中的问题,它是“没有用”,这使得它符合条件为downvoting。当然,你可以曲解这个问题并给出一个错误的答案,我有时候会这样做。在这种情况下,我只是承认我的错误并删除我的答案。你可以自由地做你喜欢的课程 –

相关问题