問題タブ [timertask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - AppWidgetProvider で onUpdate() を呼び出す方法は?
これは私のコードです...
R.id.updateがクリックされたときにwidget_titleとwidget_textviewを更新したいだけです関数getStringを実行して他のクラスから文字列を取得し、新しい文字列をtextviewに渡すことができます...
何か案が?
android - Android のタイマーと TimerTask
プログラムにタイマーが必要です。私はそれを書きましたが、PC のエミュレータ プログラム (Android 1.5/2.2) で正常に動作します。ただし、実機 (Android 1.5) では動作しません。私は何を間違っていますか?
java - 実行時に TimerTask の実行期間を変更するにはどうすればよいですか?
実行時にタイマーの期間を変更するにはどうすればよいですか?
android - 一定時間ごとに非同期タスクを繰り返し実行する方法
タイマーのように一定の時間間隔で非同期タスクを繰り返し実行する方法...実際には、サーバーからすべての最新の未読グリーティングを自動的にダウンロードするアプリケーションを開発しています。そのために、いくつかの修正後にサーバーからの更新を確認する必要があります時間間隔....タイマーを使用して簡単に実行できることは知っていますが、Androidアプリケーションにとってより効率的だと思われる非同期タスクを使用したいと考えています。
android - Android: AsyncTask を使用して Ajax 呼び出しを繰り返すことの意味
AJAX呼び出しを使用してサーバーから定期的にデータを取得し、それに応じてUIを更新するには、Androidアプリが必要です(でTextView
更新する必要がある一連のsのみsetText()
)。これには 2 つのタスクが含まれることに注意してください。
- AJAX 呼び出しを行い、応答を受信したら UI を更新します。これには単純なを使用し
AsyncTask
ます。 - 上記を一定間隔で繰り返し行います。
上記のポイント 2 を達成するエレガントな方法がわかりません。現在、からタスク自体を実行しているだけですOnPostExecute()
。SO のこのスレッドを読みましたが、AsyncTask オブジェクトに関する限り、ガベージ コレクションについて心配する必要はありません。
しかし、期限が切れた後に AsyncTask を起動するタイマーをどのように設定するかについては、まだわかりません。任意のポインタをいただければ幸いです。これが私のコードです:
}
前もって感謝します
編集:回答を投稿しようとしましたが、8時間以内に回答するという評判がないため、投稿できませんでした.
さて、私は解決策を見つけました。しかし、私は確信していません。
これを使用する際に知っておくべき裏返しはありますか? 特に、LogCat で多くの GC が発生しています。また、が完了しない限り、どのよう
AsyncTask
にGCの候補になるのでしょうか?onPostExecute()
どうすれば更新を「停止」できますか? 私が考えた 1 つの方法は、最初の
AsyncTask
インスタンスを のメンバー変数として作成することでしたActivity
。そうすれば、それを呼び出しcancel(true)
て、これがタスクを「停止」することを期待できます。
解決策:
誰かが同様のものを探している場合に備えて、ここで言及した解決策はどれも満足に機能しません。彼らは皆、問題に苦しんでOutOfMemory
います。OOM の詳細についてはデバッグしませんでしたが、再帰が原因であるか、HTTP 関連のオブジェクトを のメンバーとしてではAsyncTask
なくメンバー変数として持つことが原因であると思われますActivity
(基本的には、HTTP を再利用せず、他のオブジェクト)。
私は別のアプローチのためにこのアプローチを破棄しましdoInBackground()
たAsyncTask
。で UI を更新しonProgressUpdate()
ます。そうすれば、UI を更新するためにあまりにも多くのスレッドまたは を維持することによるオーバーヘッドも回避Handler
できます (UI は で更新できることを思い出してonProgressUpdate()
ください)。
Timer
このアプローチではs とs の必要もなくなり、代わりTimerTask
に を使用することができThread.sleep()
ます。SO のこのスレッドには、詳細とコード スニペットもあります。
java - Java で Timer および TimerTask メソッドを正しく使用して、キャンバス上で常に oscallating 移動オブジェクトを作成するにはどうすればよいですか?
キャンバスを使用してビットマップを描画する 2D ゲームを作成しようとしています。これらのビットマップはゲーム内のオブジェクトです。現在、画面上でオブジェクトを前後に移動する際に問題があります (オブジェクトの名前はターゲットです)。これを機能させる手段としてタイマーとタイマータスクを使用し、新しいハンドラーを作成しようとしましたが、何もしませんでした。動作するようです。ゲームを実行すると、ターゲットが指定されたピクセルを 1 回移動するのを確認できます (ターゲットが移動するのは、繰り返しのタイミングです)。次に、アプリがクラッシュして、(申し訳ありません!-強制終了ダイアログが表示されます。何が間違っていますか?
MainActivity コード (あまり重要ではなく、問題のある GameActivity をトリガーするだけです): package app.AngryCannonShooterActivity;
そして、ここに私のGameActivityコードがあります:
android - 定期タイマー タスクを動的タイマー タスクに変更する方法
ラジオストリーミングアプリケーションを構築しています。トラックの変更に合わせてユーザー インターフェイスを更新する必要があります。コールバック時間があり、実装する動的タイマー タスクを実装する方法を知る必要があります。
- コールバック時間を取得する
- コールバック時間の遅延を追加
- コールバック時間を取得する
- コールバック時間の遅延を追加
それが基本的に私がやろうとしていることです。誰かがこれを行うエレガントな方法を教えてもらえますか?
android - TimerTask アンドロイド ブルートゥース
Android の起動時に開始するサービスを実装しています。これは、近くの Bluetooth デバイスを 10 分ごとにスキャンすることになっています。デバイスが検出されると、いくつかの作業が行われます。また、この定期的なスキャンは、デバイスがオンになっている間ずっと実行する必要があります。TimerTask をスケジュールしようとしていますが、使用方法がわかりません。TimerTask の run メソッドでコードを記述する代わりに、このサービスを開始して、サービスに作業を任せるべきだと思いますか? これが私の問題を解決する最も簡単な方法のようですが、TimerTask は java.util の一部であり、Android のクラスの 1 つではありません。
Android の AlarmManager を見つけました。私はそれを使うべきですか?サービスを開始できますか?
これまでのところ私はこれを持っていますが、助けが必要です:
myHandler.postDelayed(r,10 分); } }
r.run(); }
onDestroy()
{
super.onDestroy();
myHandler.removeCallback(r);
}
} クラス MyService は Service { } を拡張します
申し訳ありませんが、ここでの書式設定の仕組みがわかりません。
サービスで onDestroy() をオーバーライドする必要がありますか? どこで stopService() を使用しますか?
android - 遅延アクションとBroadcastReceiver
デバイスに電源が接続されてからN秒後にUI以外のアクションを開始しなければならない場合があります。このアクションは、ユーザーがUIを介して開始することもできます。
ACTION_POWER_CONNECTEDをリッスンするBroadcastReceiverがAndroidManifest.xmlで定義されています。
onStartCommandで必要なアクションを実行するサービスがあります。私の質問は、アクションがブロードキャストによってトリガーされた場合にそのサービスを開始する正しい方法は何ですか?
私は2つのオプションを念頭に置いています:
ワンショットタイマータスク。ただし、ドキュメントによると、BroadcastReceiverから非同期タスクを開始できなかったため、間違っている可能性があると思います。
再設計サービス:
- アクションがユーザーによってトリガーされた場合は、 onStartCommandでアクションを開始します
- タイマータスクを開始し、タイマーショットでアクションを実行します(1と同じロジックですが、サービス内)。アクションがブロードキャストによってトリガーされた場合。
私は2に傾いています。コードが少し複雑になりますが、それは正しい方法にすぎないようです。
-レブ