Java 安卓服务基础

Java 安卓服务基础,java,android,service,android-asynctask,intentservice,Java,Android,Service,Android Asynctask,Intentservice,我是Android服务的新手,所以我有一些问题可以澄清我如何在我当前的项目中使用它们 1) 我是否需要运行应用程序才能运行服务?我是否必须启动应用程序才能启动服务 2) 我想在服务运行结束时在屏幕上打印文本。首先,是否可能;其次,当我切换到活动的屏幕时,我是否能够在活动UI上看到此文本 3) 我希望我的服务使用在主活动类中实现的变量和函数。可能吗 4) 与问题3相关:我当前应用程序中有一个异步任务,它使用TimerTask每分钟重复一次。我希望有相同的功能,但这次在后台运行时,用户正在忙着做其他

我是Android服务的新手,所以我有一些问题可以澄清我如何在我当前的项目中使用它们

1) 我是否需要运行应用程序才能运行服务?我是否必须启动应用程序才能启动服务

2) 我想在服务运行结束时在屏幕上打印文本。首先,是否可能;其次,当我切换到活动的屏幕时,我是否能够在活动UI上看到此文本

3) 我希望我的服务使用在主活动类中实现的变量和函数。可能吗

4) 与问题3相关:我当前应用程序中有一个异步任务,它使用TimerTask每分钟重复一次。我希望有相同的功能,但这次在后台运行时,用户正在忙着做其他事情。服务是正确的做法吗?我可以通过从服务中运行searchRegulary()函数(位于活动中)来实现这一点吗?下面,
backgroundSearch
是每分钟运行的异步任务的名称

    public void searchRegularly() {

    TimerTask doAsynchronousTask;
    final Handler handler = new Handler();
    searchTimer = new Timer();
    doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            handler.post(new Runnable() {
                public void run() { 

                      backgroundSearch = new SearchTask();
                      backgroundSearch.execute();
                }
            });

        }

    };

    searchTimer.schedule(doAsynchronousTask, 1000,60000);

}
5) 您如何决定使用服务还是IntentService?主要区别是什么?

1)不。但是应用程序(我指的是清单中的应用程序类,而不是活动)将在您的服务之前创建

2) 你的意思是“?对

3) 虽然有一些技巧是可能的,但不建议这样做。重新考虑你的设计

4)服务可以做,或者可以考虑

5) 服务本身应该是单例的,同一类的两个服务不能同时运行;对于服务,若您调用多个StartService,并且服务已经在运行,它将不会启动两次。但IntentService将同时在多个“启动”上工作