目前,在我的主應用程序中,我正在向狀態欄對象發送多個文本。正在使用應用程序部件中推薦的Executors.newSingleThreadExecutor
我的狀態欄對象將按順序顯示多個文本,每個顯示間隔的睡眠時間爲N秒。
這是我在我的主應用程序中的實現。
public synchronized void setNextText(final CharSequence text) {
if (executor == null) {
executor = Executors.newSingleThreadExecutor();
}
executor.execute(new Runnable() {
@Override
public void run() {
Fragment fragment = getTargetFragment();
if (fragment instanceof OnStatusBarUpdaterListener) {
((OnStatusBarUpdaterListener)fragment).setNextText(text);
try {
// Allow 1 seconds for every text.
Thread.sleep(Constants.STATUS_BAR_UPDATER_TIME);
} catch (InterruptedException ex) {
Log.e(TAG, "", ex);
}
}
}
});
}
現在,我想在應用程序小部件中具有相同的行爲。我想知道,在應用小部件環境中推薦使用Executor
?如果不是,我應該用什麼班級來實現類似的目標?
我在使用HandlerThread
+ AlarmManager
在應用部件中有經驗。迄今爲止效果很好。但是,runnable
完成的操作是一次。它不睡覺,等待。
以下是我用於更新固定區間股票價格的代碼。
// This code is trigger by AlarmManager periodically.
if (holder.updateStockPriceHandlerThread == null) {
holder.updateStockPriceHandlerThread = new HandlerThread("updateStockPriceHandlerThread" + appWidgetId);
holder.updateStockPriceHandlerThread.start();
holder.updateStockPriceWorkerQueue = new Handler(holder.updateStockPriceHandlerThread.getLooper());
holder.updateStockPriceWorkerQueue.post(getUpdateStockPriceRunnable(...
}
然而,我有一種感覺,對於用例「顯示多個依次文本,用N秒爲每個顯示間隔的睡眠時間」,AlarmManager
可能不是一個好的解決方案。想象一下,我有100個文本。不得不爲100個文本設置100個警報......
「家庭小工具」,你的意思是[應用小工具](https://developer.android.com/guide/topics/appwidgets/index.html)? – CommonsWare
Opps。我總是使用術語「家庭小工具」與我的客戶溝通。我將其更改回「應用小部件」。 –