android-更新服务在后台运行

android-更新服务在后台运行,第1张

概述我需要执行这样的过程:>启动后台服务>使用参数更新服务(从UI-用户输入)>活动结束后,服务应继续运行,并每分钟对HTTP服务器执行请求.在此阶段中,我仍然需要在第二阶段中更新的参数-我将它们发送到服务器.>服务应存储服务器的最后响应,并使用最后响应进行响应.如果有更改,请通知用户

我需要执行这样的过程:

>启动后台服务
>使用参数更新服务(从UI-用户输入)
>活动结束后,服务应继续运行,并每分钟对http服务器执行请求.在此阶段中,我仍然需要在第二阶段中更新的参数-我将它们发送到服务器.
>服务应存储服务器的最后响应,并使用最后响应进行响应.如果有更改,请通知用户.
>最后,当活动再次开始时,服务应使用最新的服务器响应来更新UI.

我试过的
broadcastReciver-问题在于onRecive结束后,所有未声明为final的参数都会消失,而且我也没有找到一种方法来更新每分钟自动发送的Intent.

服务-使用startService()-问题是当活动结束服务(如停止和启动)时,将刷新其所有参数.再一次,我没有弄清楚在服务启动后如何更新参数.

那么如何处理这种情况呢?

谢谢.

解决方法:

听起来您需要做的就是能够“绑定”到您的服务.我在下面发布的是一个简单的模板.出于您的目的,您将需要在Service类中存储变量并创建getter,以便在您重新启动活动时可以获取最新的变量.另外-请注意,我在onResume和onPause中启动和停止了以下服务示例.毫无疑问,您将希望以不同的方式进行 *** 作.

//Activity//Bind to Service Examplepublic class ExampleActivity extends Activity implements OnClickListener {// UIprivate button binderbutton;// serviceprivate MyService myService;private Intent serviceIntent;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.your_layout);    // binder button    binderbutton = (button) findVIEwByID(R.ID.button1);    binderbutton.setonClickListener(this);    binderbutton.setText("start");    serviceIntent = new Intent(this, MyService.class);}private ServiceConnection serviceConnection = new ServiceConnection() {    @OverrIDe    public voID onServiceConnected(Componentname name, IBinder service) {        myService = ((MyService.mybinder) service).getService();    }    @OverrIDe    public voID onServicedisconnected(Componentname name) {        myService = null;    }};@OverrIDeprotected voID onResume() {    super.onResume();    // start the service    startService(serviceIntent);    // bind to the service    bindService(serviceIntent, serviceConnection, Context.BIND_auto_CREATE);}@OverrIDepublic voID onClick(VIEw v) {    switch (v.getID()) {    case R.ID.button1:        // call method within the service        myService.doServiceStuff();        break;    }}@OverrIDeprotected voID onPause() {    super.onPause();    stopService(serviceIntent);    unbindService(serviceConnection);}}
//Servicepublic class MyService extends Service {private final IBinder binder = new mybinder();@OverrIDepublic IBinder onBind(Intent arg0) {    return binder;}public voID doServiceStuff() {    task.execute();}// create an inner Binder classpublic class mybinder extends Binder {    public MyService getService() {        return MyService.this;    }}AsyncTask<VoID, VoID, VoID> task = new AsyncTask<VoID, VoID, VoID>() {    @OverrIDe    protected VoID doInBackground(VoID... params) {        Log.d("yourTag", "long running service task");        return null;    }       };}
总结

以上是内存溢出为你收集整理的android-更新服务在后台运行全部内容,希望文章能够帮你解决android-更新服务在后台运行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存