Android:如何重复调用Android服务中的函数?

时间:2017-07-04 13:42:04

标签: android service

我创建了一个Android服务,我找到了处于Error状态的进程以及UsageStatManager中应用程序的使用情况。当我运行此服务时,它会执行一次中的方法,我想定期检查错误状态的进程和应用程序的使用情况。

我想到的一种方法是实现一个带有Thread.sleep()的while循环,我想查看我的统计数据,但想知道是否还有其他方法可以更好地执行此操作while循环可能会使用CPU消耗。任何想法都会有所帮助。

我的代码:

public class Senddata_1 extends Service {

private String ip = "85.228.204.209";
private int port = 5000;
String message;
String file;
String TAG = "Senddata_1";

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("M-d-yyyy HH:mm:ss");

public void find_out_process_in_error_state(){

    /*Some code to find out process in error state*/
    return;
}

private UsageStatsManager getUsageStatsManager(Context context){
    UsageStatsManager usm = (UsageStatsManager) context.getSystemService("usagestats");
    return usm;
}

public List<UsageStats> getUsageStatsList(Context context){


    List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime,endTime);
    return usageStatsList;
}

public void printUsageStats(List<UsageStats> usageStatsList){

}


@Override
public void onCreate() {
    super.onCreate();
    Log.e(TAG, "Inside service Senddata_1");


    find_out_process_in_error_state();
    printUsageStats(getUsageStatsList(Senddata_1.this));

    new Thread(new Senddata_1.ClientSend()).start();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    return START_STICKY;
}


@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
//        return;
}

public class ClientSend implements Runnable {

}

}

1 个答案:

答案 0 :(得分:0)

您可以使用Timer并在设定时间内启动服务并运行功能

Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {

            //start service here

        }
    }, 0, mTimeRate);

mTimeRate将以毫秒为单位