実行時に遅延関数を実行したいアクティビティがあります。機能の遅延は[i]したくない[/i OnClick
]。アクティビティの[i]開始[/i]を遅らせたい.
私は次の解決策を試しました:
...さらにいくつかありますが、どれも私が望むものではありませんでした。アクティビティの開始時 (私のプロジェクトでは、ゲームの開始時) に遅延が必要ですが、そのコードを使用すると、画面に指を置くと遅延 (たとえば 10 秒) が開始されます。
実行時に遅延関数を実行したいアクティビティがあります。機能の遅延は[i]したくない[/i OnClick
]。アクティビティの[i]開始[/i]を遅らせたい.
私は次の解決策を試しました:
...さらにいくつかありますが、どれも私が望むものではありませんでした。アクティビティの開始時 (私のプロジェクトでは、ゲームの開始時) に遅延が必要ですが、そのコードを使用すると、画面に指を置くと遅延 (たとえば 10 秒) が開始されます。
onCreate(..) 関数の「setContentView(R.layout.xxxx..)」の前にThread.sleep(long)を配置する必要があります。そのようにして、アクティビティの要素を表示する前に実際に遅延します。
onCreate(...) が起動される前でも遅らせたい場合は、アプローチを変える必要があります。ここに 1 つの提案があります。
サービスを実行し、ActivityManager クラスを使用してフォアグラウンド アプリケーションを確認します (以下のサンプル コードを参照)。アプリがいつ起動されるか、「フォアグラウンド」に移動されるかを確認し続け (以下のコードを使用)、ホーム画面に戻って (サービス自体で) タイマーを開始します。タイマーが切れたら、アプリを起動します。
サービスの AsyncTask 内で以下の関数を実行できます。
2 つのアプローチはまったく異なり、正確に何を達成しようとしているかによって異なります。
@SuppressWarnings("deprecation")
private void getRunningAppName() throws NameNotFoundException {
Log.v("neiltag", "Entered getRunningAppName()");
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// The first in the list of RunningTasks is always the foreground task.
RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0);
String foregroundTaskPackageName = foregroundTaskInfo .topActivity.getPackageName();
PackageManager pm = this.getPackageManager();
PackageInfo foregroundAppPackageInfo = pm.getPackageInfo(foregroundTaskPackageName, 0);
String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo.loadLabel(pm).toString();
String packageName = foregroundAppPackageInfo.packageName;
if(foregroundTaskAppName.matches("<NAME OF YOUR APP HERE>")) {
//If your app is fired go back to the Homescreen(i.e. the delay)
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "You are not allowed to open Facbeook now, sorry!", Toast.LENGTH_SHORT).show();
}
});
}
//ADD A TIMER HERE
//ONCE TIMER EXPIRES, FIRE UP YOUR APP AGAIN
}