应用程序强制关闭后,Android服务不会重新启动。

应用程序强制关闭后,Android服务不会重新启动。,android,service,Android,Service,我的服务开始得很好,很好。我写的条件是,若服务已经在运行,那个么它不会再次启动服务。条件返回显示服务正在运行的真值。但每当我强制停止我的应用程序,或者发生任何异常时,我的服务都会停止在后台加载数据,直到显示服务正在运行。这就是为什么服务不会重新启动 我用于从活动启动服务的意图: this.startService(new Intent(MainMenu1.this, MovieService.class)); 我的服务级别是: 公共类电影服务扩展服务{ @Override public int

我的服务开始得很好,很好。我写的条件是,若服务已经在运行,那个么它不会再次启动服务。条件返回显示服务正在运行的真值。但每当我强制停止我的应用程序,或者发生任何异常时,我的服务都会停止在后台加载数据,直到显示服务正在运行。这就是为什么服务不会重新启动

我用于从活动启动服务的意图:

this.startService(new Intent(MainMenu1.this, MovieService.class));
我的服务级别是:

公共类电影服务扩展服务{

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TBD
    Log.i("Movie Service : "," Created2");
    new MovieDownloaderTask().execute();
    return Service.START_FLAG_REDELIVERY;
    //return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
 public void onCreate() {
  Log.i("Movie Service : "," Created");

 }

 @Override
 public void onDestroy() {
     Log.d("Movie Service","onDestroy was Called!");
     super.onDestroy();
 }

 @Override
 public void onStart(Intent intent, int startid) {
     Log.i("Movie Service : "," Started");

 }

 public class MovieDownloaderTask extends AsyncTask<Void, Void, Integer> 
    {
        @Override
        protected Integer doInBackground(Void... params) {
            Log.i("Movie Service"," : Started2");
            //Moviejson.createDB();

            try
            {
                Moviejson.insert_Movie_Data();
            }
            catch(Exception e)
            {
                Log.e("Exception > ", "i m in doInBackground. Trying to stop Movie service.");
                MovieService.this.stopSelf();
                e.printStackTrace();
            }
            return 1;

        }

        @Override
        protected void onPostExecute(Integer result) {
            if (result == 1) {

                if(MainMenu1.Movies_new_time==null)
                {
                    MainMenu1.Movies_new_time=MainMenu1.sp.getMovies_Old_Date();
                }
                else
                {
                    MainMenu1.sp.setMovies_Current_Date(MainMenu1.Movies_new_time);
                }
                MainMenu1.sp.setMovies_Current_Date(MainMenu1.Movies_new_time);

                Log.i("Movie Date:", " : "+MainMenu1.Movies_new_time);

                MovieService.this.stopSelf();
                Log.i("Movie Service"," : Stoped");
                super.onPostExecute(result);
            }
        }
    }
@覆盖
公共int onStartCommand(Intent Intent、int标志、int startId){
//待定
Log.i(“电影服务:”,“Created2”);
新电影下载任务().execute();
退货服务。开始\标志\重新交付;
//return Service.START\u STICKY;
}
@凌驾
公共IBinder onBind(意向){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public void onCreate(){
Log.i(“电影服务:,“创建”);
}
@凌驾
公共空间{
Log.d(“电影服务”,“onDestroy被调用!”);
super.ondestory();
}
@凌驾
公共无效启动(Intent Intent,int startid){
Log.i(“电影服务:,“已启动”);
}
公共类电影下载任务扩展异步任务
{
@凌驾
受保护的整数doInBackground(Void…params){
Log.i(“电影服务”,“开始2”);
//Moviejson.createDB();
尝试
{
Moviejson.insert_Movie_Data();
}
捕获(例外e)
{
Log.e(“异常>”,“我在后台。试图停止电影服务。”);
MovieService.this.stopSelf();
e、 printStackTrace();
}
返回1;
}
@凌驾
受保护的void onPostExecute(整数结果){
如果(结果==1){
if(MainMenu1.Movies\u new\u time==null)
{
MainMenu1.Movies\u new\u time=MainMenu1.sp.getMovies\u Old\u Date();
}
其他的
{
MainMenu1.sp.setMovies\u当前日期(MainMenu1.Movies\u新时间);
}
MainMenu1.sp.setMovies\u当前日期(MainMenu1.Movies\u新时间);
Log.i(“电影日期:,:”+MainMenu1.Movies\u new\u time);
MovieService.this.stopSelf();
Log.i(“电影服务”,“停止”);
super.onPostExecute(结果);
}
}
}

}

在您的
onstart命令()
中,替换

return Service.START_FLAG_REDELIVERY;

return Service.START_REDELIVER_INTENT