2014-02-08 3 views
0

У меня есть активность, которую я хочу запустить Функция задержки, когда она запускается. Я [i] не хочу [/ i] задерживать функцию OnClick, мне нужно задержка при запуске [i] [i].Функция задержки на Android-проекте

я попытался следующие решения:

  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

... и еще немного и ни один из них сделал то, что я хотеть. Мне нужна задержка при запуске активности (для моего проекта, когда Game Starts), но с этими кодами, он запускает задержку (например, 10 секунд), когда я нажимаю палец на экран.

+0

возможно дубликат [Как установить задержку функции Android OnClick] (http://stackoverflow.com/questions/4199191/how-to-set-delay-in-android-onclick-function) –

+0

@ Мартин Динов: Я не хочу задерживать функцию onClick, мне нужна задержка при запуске активности. Я проверил все эти вопросы и ** Ни один из них не работал:] – ShaPesar

+0

Привет, почему вы хотели бы отложить начало активности? это решение любой другой проблемы? – KLiFF

ответ

2

Вы должны поместить Thread.sleep(long) перед «setContentView (R.layout.xxxx ..)» в функции onCreate (..). Таким образом, он будет фактически задерживаться, прежде чем показывать вам элементы 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 

    }