如何在没有任何gui的情况下创建服务,每3小时运行一次?

时间:2013-12-21 11:39:56

标签: android

我写了一些应用程序,它取了我的android手机中存在的一些文件夹并压缩了文件夹 - 并将其发送到某个FTP服务器。

这个应用程序没有问题,但是这个应用程序包含GUI并发送激活它我需要按下活动上的一些按钮。

但是现在,我想写一些其他应用程序并将作为服务运行并将执行相同的操作 - 这意味着该服务将每3小时运行一次并将压缩一些文件夹并将压缩文件夹上传到ftp。

我不知道该怎么做......

  1. 如何创建将使用手机运行的此服务
  2. 如何上传到FTP?没有从活动中进行,我无法上传到FTP。
  3. 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要使用报警管理器定期拨打电话服务,以下是您如何使用报警管理员提供服务的答案

http://khurramitdeveloper.blogspot.in/2013/06/android-alarm-manager-to-start-service.html

用于启动启动服务

http://khurramitdeveloper.blogspot.in/2013/06/start-activity-or-service-on-boot.html

答案 1 :(得分:1)

我假设您知道如何创建服务,但不知道如何在启动时启动它。这就是解决方案的分解方式:

  1. 注册接收器以接收启动广播。
  2. 从接收方开始服务。
  3. 在服务中,使用Alarm Manager注册定期唤醒。
  4. 在被警报管理器唤醒后,运行文件上传代码。
  5. 启动后启动:

    首先你需要创建一个接收器:

        public class AfterBootReceiver extends BroadcastReceiver {
    
           final static String TAG = "BootCompleted";
    
           @Override
           public void onReceive(Context context, Intent arg1) {
           Log.w(TAG, "about to start service...");
           context.startService(new Intent(context, YourService.class));
           //This line starts your service.
           }
        }
    

    然后在Manifest.xml 注册上述接收者时,授予服务启动启动权限。

       <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
       <receiver android:name=".AfterBootReceiver" >
           <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
           </intent-filter>
       </receiver>
    

    如果您希望它在启动时启动,请不要将您的应用放在SD卡上

    要在服务中运行定期代码:

    对于周期,您可以使用Alarm Manager

    示例: Start service every hourUsing alarm manager instead of timer task

    然后,在定期代码中,文件上传任务:

    FTP file upload example