我可以在android中完全重新启动服务吗?

Posted

技术标签:

【中文标题】我可以在android中完全重新启动服务吗?【英文标题】:Can I restart service completely fresh in android? 【发布时间】:2016-06-19 00:46:18 【问题描述】:

我正在通过服务和其中的异步任务运行后台任务。首先,它从数据库中获取所有数据并在用户更改某些选项时开始运行,我销毁并再次启动服务以处理新数据,但不幸的是服务从它停止的地方运行。所以我想开始全新的服务。我试过START_NOT_STICKY 但没用。

public class MyService extends Service 
    public void onCreate()
        super.onCreate();

    
    public int onStartCommand(Intent intent, int flags, int startId) 
       Bundle extras = intent.getExtras();
       process.execute();
       return START_NOT_STICKY;
    
    public void onDestroy() 
       stopSelf();
       super.onDestroy();
       Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
    
    class ProcessImageAsync extends AsyncTask<String, Integer, String>   
        @Override
        protected String doInBackground(String... params) 
          // here im getting content from db and processing .
        if (isCancelled()) 
           System.exit(0);
        
        
    


我的活动代码是我如何重新启动服务

public void startServiceFucntion(int type)

        if(isMyServiceRunning(MyService.class))
            if (type == 1)
                Intent serviceIntent = new Intent(this, MyService.class);
                stopService(serviceIntent);
                startServiceFucntion(0);
            
         else 
            Intent serviceIntent = new Intent(this, MyService.class);
            if(serviceReceiver == null)
                registerReceiver(serviceReceiver, intentSFilter);
            
            startService(serviceIntent);
        

【问题讨论】:

【参考方案1】:

我认为您没有正确停止服务,并且您的异步任务继续在后台运行。您还需要在销毁您的服务时取消您的 asynctask。

【讨论】:

谢谢哥们。我不知道我是怎么错过的。 你欢迎兄弟 :) 有时它也会发生在我身上【参考方案2】:

你没有停止服务属性。我认为你可以在androidManifest.xml中注册一个广播来重启服务或销毁服务。

【讨论】:

谢谢你我没有停止异步这是一个问题【参考方案3】:

服务是在后台运行以执行的组件 长时间运行的操作,无需与用户交互 即使应用程序被销毁,它也能正常工作。

AsyncTask 允许正确且轻松地使用 UI 线程。这节课 允许执行后台操作并在 UI 上发布结果 线程,而无需操作线程和/或处理程序。

所以您不能停止您的 服务,因为您的 AsyncTask 继续运行。

【讨论】:

以上是关于我可以在android中完全重新启动服务吗?的主要内容,如果未能解决你的问题,请参考以下文章

当服务器连接丢失时,如何自行停止和重新启动客户端的服务?

Android 开发中Service完全解析

nginx - 我可以在不重新启动服务器的情况下添加新的虚拟主机吗?

服务问题中的Android线程

Windows Server 2016 怎么重新启动远程服务器

Windows Server 2016 怎么重新启动远程服务器