我是Android服务的新手,所以我有一些问题可以说明如何在我当前的项目中使用它们。
1)我是否需要运行我的应用程序才能运行该服务?我是否必须启动应用程序才能启动服务?
2)我想在服务结束时在屏幕上打印文本。首先,是否可能,第二,当我切换到活动界面时,我能否在活动用户界面上看到此文字?
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)您如何决定使用服务还是IntentService?主要区别是什么?
答案 0 :(得分:2)
1)否。但是应用程序(我的意思是Manifest中的Application类,而不是活动)将在您的服务之前创建
2)你的意思是“toast”吗?是
3)尽管有些技巧可能,但不建议这样做。重新思考你的设计。
4)服务可以做,或者你可以考虑AlaramManager
5)服务本身应该是一个Singleton,同一个类的两个服务不会同时运行;对于Service,如果您调用多个StartService,并且Service已经运行,则它将不会启动两次。但是IntentService将同时处理多个“启动”。