【问题标题】:Android Service BasicsAndroid 服务基础
【发布时间】:2012-06-12 00:48:57
【问题描述】:

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

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

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

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

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

    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) 你如何决定使用 Service 还是 IntentService?主要区别是什么?

【问题讨论】:

    标签: java android service android-asynctask intentservice


    【解决方案1】:

    1) 不会。但是应用程序(我的意思是 Manifest 中的 Application 类,而不是活动)将在您的服务之前创建

    2) 你的意思是“toast”吗?是的

    3) 虽然可以通过一些技巧来实现,但不建议这样做。重新考虑您的设计。

    4) 服务可以做,也可以考虑AlaramManager

    5) Service 本身应该是一个 Singleton,同一个类的两个 Service 不会同时运行;对于Service,如果调用多个StartService,如果Service已经在运行,则不会启动两次。但是 IntentService 将同时在多个“启动”上工作。

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 1970-01-01
      • 2010-11-25
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多