現在、私の主なアプリでは、ステータスバーオブジェクトに複数のテキストを送信しています。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
の操作は1回です。それは眠らず、待っている。
以下は、固定価格で株価を更新するためのコードです。
// 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。私はいつも "家庭用ウィジェット"という言葉を使って顧客と話します。私はそれを "app widget"に戻します。 –