gpt4 book ai didi

java - Android项目上的延迟函数

转载 作者:行者123 更新时间:2023-12-02 06:14:02 26 4
gpt4 key购买 nike

我有一个 Activity ,我想在它运行时运行延迟函数。我[i]不[/i]想要延迟 OnClick 函数,我想要在 Activity [i]开始[/i]时延迟。

我尝试过以下解决方案:

  1. How to set delay in Android onClick function
  2. How to pause/delay on Android?
  3. Android: Timer/Delay Alternative
  4. Android timer set delay

...还有更多,但没有做到了我想要的。我想要在 Activity 开始时延迟(对于我的项目,当游戏开始时),但是使用该代码,当我将手指放在屏幕上时,它会开始延迟(例如 10 秒)。

最佳答案

您应该输入 Thread.sleep(long)在 onCreate(..) 函数中的“setContentView(R.layout.xxxx..)”之前。这样,它实际上会在向您显示 Activity 的元素之前延迟。

如果您想在 onCreate(...) 触发之前进行延迟,则方法需要有所不同,这里有一个建议:

运行服务并使用 ActivityManager 类检查前台应用程序(请参阅下面的示例代码)。继续检查您的应用程序何时被触发或进入“前台”(使用下面的代码),然后返回主屏幕并启动计时器(在服务本身中)。计时器到期后,启动您的应用程序。

您可以在服务中的 AsyncTask 中运行以下函数。

这两种方法完全不同,实际上取决于您想要实现的目标。

@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

}

关于java - Android项目上的延迟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com