1. A method comprising: storing, by a computing device, historical context data related to user contexts and device contexts over a period of time, the user contexts related to activities of a user of multiple user devices and the device contexts related to operational states of the multiple user devices; storing, by the computing device, current context data indicating user contexts and devices contexts at a current time, the user contexts related to activities of the user of the multiple user computing devices and the device contexts related to operational states of the multiple user devices; receiving, by the computing device, an activity request for determining when to perform an activity on the computing device, the activity request including one or more context parameters and a time window having a start time and an end time; predicting, by the computing device, at least one future context comprising either: at least one future user context related to the user of the computing device or at least one device context related to a future operational state of the computing device, wherein the at least one future context is predicted based on historical context data associated with the one or more context parameters; predicting, by the computing device for each of a plurality of times within the time window, a context score associated with the at least one future context based on the one or more context parameters and the historical context data; selecting, by the computing device, a highest context score from the predicted context scores as an optimal score for the activity request, wherein the time corresponding to the context score is predicted to be an optimal time within the time window for performing the activity; determining, by the computing device, a threshold value for determining whether to perform the activity, the threshold value being determined based on the optimal score; determining, by the computing device, a current context score based on the current context data associated with the one or more context parameters; determining, by the computing device, that the current context score is greater than the threshold value; and in response to determining that the current context score is greater than the threshold value, performing, by the computing device, the activity corresponding to the activity request.