【发布时间】:2013-07-17 08:21:13
【问题描述】:
在我的 Android 应用程序中,我运行的服务会大大降低我的应用程序的速度。我不知道是否有我选择的最佳方式。我认为这是因为我使用 sleep() 函数每隔 x 秒检查一次网站是否发生了变化,但我对此完全不确定。代码如下:
package com.example.goo;
//import
public class ServiceLive extends Service{
ThreadDemo td = new ThreadDemo();
String[] tabAllTeams;
String[] tabAllScores;
String code;
Document doc;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
System.out.println("Lancement de mon service");
td.run();
}
public String[] getAllTeams(){
return tabAllTeams;
}
public String[] getAllScores(){
return tabAllScores;
}
private class ThreadDemo extends Thread{
@Override
public void run() {
super.run();
try{
ThreadDemo.sleep(3000*10);
System.out.println("check again");
new NetworkOperation().execute();
}catch(Exception e){
e.getMessage();
}
new NetworkOperation().execute();
}
}
//Get All Data
class NetworkOperation extends AsyncTask<Void, Void, String > {
protected String doInBackground(Void... params) {
try {
//Définir Site De Récupération
doc = Jsoup.connect("http://www.siteduzero.com").get();
//Définir Classe de Récupération
Elements getId = doc.getElementsByClass("page-visitors");
code = getId.text();
} catch (Exception e) {
e.printStackTrace();
}
td.run();
return null;
}
}
}
导致应用变慢的部分是什么?谢谢
解决方案:
在这里查看 Maurice Gavin 的答案:How to start service in new thread in android
【问题讨论】:
-
设置一些断点,看看方法调用、分配等之间需要多长时间。
-
了解 IntentService (developer.android.com/reference/android/app/IntentService.html)。我认为它会做你想要的。否则,您必须使用 AsyncTask 或您自己的线程。
标签: java android performance service