[解決済み] X秒ごとにメソッドを実行する方法
2022-05-16 04:01:13
質問
Android 2.3.3アプリケーションを開発しています。 X秒 .
iOSでは NSTimer がありますが、Androidでは何を使えばいいのかわかりません。
どなたかお勧めの ハンドラ 別の人が私を推薦しています。 アラームマネージャ を推奨されましたが、どちらの方法が NSTimer .
これはAndroidで実装したいコードです。
timer2 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/20.0f)
target:self
selector:@selector(loopTask)
userInfo:nil
repeats:YES
];
timer1 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/4.0f)
target:self
selector:@selector(isFree)
userInfo:nil
repeats:YES
];
次のようなものが必要です。 NSTimer .
私のおすすめは?
どのように解決するのですか?
あなたが使用するソリューションは、関数の各実行間にどれくらいの時間待つ必要があるかに本当に依存します。
もし10分以上待つのであれば、私は
AlarmManager
.
// Some time when you want to run
Date when = new Date(System.currentTimeMillis());
try {
Intent someIntent = new Intent(someContext, MyReceiver.class); // intent to be launched
// Note: this could be getActivity if you want to launch an activity
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context,
0, // id (optional)
someIntent, // intent to launch
PendingIntent.FLAG_CANCEL_CURRENT // PendingIntent flag
);
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE
);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
when.getTime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pendingIntent
);
} catch(Exception e) {
e.printStackTrace();
}
上記をブロードキャストしたら
Intent
を受信することができます。
Intent
を実装することで
BroadcastReceiver
. これはアプリケーションマニフェストに登録するか、または
context.registerReceiver(receiver, intentFilter);
メソッドで登録する必要があります。
の詳細については
BroadcastReceiver
の詳細については、公式ドキュメントを参照してください。
.
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("MyReceiver: here!") // Do your work here
}
}
もし10分より短い時間待つのであれば、私は
Handler
.
final Handler handler = new Handler();
final int delay = 1000; // 1000 milliseconds == 1 second
handler.postDelayed(new Runnable() {
public void run() {
System.out.println("myHandler: here!"); // Do your work here
handler.postDelayed(this, delay);
}
}, delay);
関連
-
adb devices OffLine Solution(オフラインソリューション
-
Android Nで報告されたエラーを解決する: android.os.FileUriExposedException: file:///storage/emulated/0/
-
Androidで、onTouchEventでダブルクリックを実装し、ダブルクリックイベントとして判定する方法
-
アンドロイドスタジオ学習入門
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Gradle のエラーです。gradle-core.jar (com.android.tools.build:gradle-core:x.x.x) を見つけられませんでした。
-
GIF、Lottie、SVGA
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
例外「指定された子にはすでに親がいます」の解決方法。removeViewを呼び出す必要があります" の解決方法(ソースコード付き例)
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
view.getRootView()の本当の意味とテストについて
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
android.content.ActivityNotFoundException を解決します。Intent問題を処理するActivityが見つからない