如何设计一个在后台对网页执行测试的应用程序,并让用户正常使用他的手机



我目前正在尝试设计一个特定的应用程序,但我真的不知道怎么做。应用程序必须像这样运行。

我要做的是:

用户启动应用程序。此操作启动独立于 UI(当前服务)的操作,即使应用程序的 UI 不在屏幕上,UI也必须请求远程服务器以获取测试方案、执行测试并将结果发送到同一服务器。

第二个约束:用户在开始时选择来自服务器的两个场景请求之间的时间。

示例: 用户启动应用程序,选择"每 5 分钟执行一次测试场景请求",之后,他可以在手机上做任何他想做的事情。并且应用程序每5分钟发送一次请求以获取测试场景(不是一个,而是各种数字,例如50),做测试场景,并将结果发送到服务器;然后,等待下一个请求。
在此期间,我认为状态栏中的通知图标可能是访问应用程序 UI 的好事。这样,当用户觉得应用已经完成了足够的测试时,他可以访问 UI 并停止应用。

我已经做了什么:

我创建了一个创建服务的活动。我还用AlarmManager设置了一个闹钟,收到一个AlarmReceiver,每 X 分钟/秒/...并在服务中启动对服务器的请求以获取方案(HTTP 请求在 AsyncTask 中完成)。该服务在其onCreate()方法的状态栏中放置通知。我还设法解析了JSON,发送了HttpRequest以及诸如此类的技术性内容。

我的问题是什么:

我发现服务在onStartCommand()结束时自行停止。它完成了方法,然后转到onDestroy()(我不放stopSelf()),但是服务真的关闭了吗?如果是,我怎么能在申请的所有期间设法让它"启动"?

状态栏中的通知刚刚出现并消失,并带有AlarmManager给出的 rythme。我怎样才能"稳定"它?

如果您已经设计了这样的应用程序(我认为邮件应用程序就是一个很好的例子,它每 X 分钟请求邮件服务器检查新邮件并发送通知),我如何才能达到我的目标?重用邮件应用程序示例:检查服务器上新邮件的服务是否始终在运行?

我真的不知道如何设计这个应用程序之王,所以欢迎任何帮助。对不起,我的英语不好。如果你想要精度,服务代码,活动,就问。

问候

看起来您的Service正在 UI 线程上运行。您应该在Service内创建一个新线程,所有网络操作都将在其中工作。因此,不需要AlarmManager - 只需在您的Threadwait X 毫秒.

附言如果您不知道如何创建新线程:

new Thread(new Runnable(){
    public void run(){
        //your code here
    }
}).start();

但我强烈建议您先阅读有关多线程的信息。

相关内容

最新更新