2014-01-30 2 views
0

Я хочу, чтобы код, показанный здесь, чтобы запустить все время:Java класс не работает

class secondClass extends TimerTask { 

    MediaPlayer mp; 

    public void onCreate(Context context) { 
     mp = MediaPlayer.create(context, R.raw.flyinghome); 
    } 

    public void run() { 
     float x = (float) Math.random(); 
     float y = (float) Math.random(); 
     mp.setVolume(x, y); 
    } 

    public static void main(String[] args) { 
     secondClass task = new secondClass(); 
     Timer timer = new Timer();   
     timer.scheduleAtFixedRate(task, 0, 2000);   
    } 
} 

Как я могу это TimerTask работает в то же время, как класс MainActivity если класс MainActivity расширяет активность и инвентарь OnCLickListener ,

+0

Я не знаком с потоками, я буду искать какие-то уроки ... – Pete

ответ

0

Как вы можете прочитать here

Каждый таймер имеет одну нить, на которой задачи выполняются последовательно.

Вы можете запланировать задачу для запуска внутри этого потока, с помощью одной из функций schedulling, таких как:

Timer t = new Timer(); 

t.schedule(new secondClass(), delay); 
//delay is the amount of time in milliseconds before execution. 

, так как вы хотите, чтобы работать все время, вы можете рассмотреть возможность использования schedule(java.util.TimerTask, long, long) который планирует задачу для повторного выполнения с фиксированной задержкой после определенной задержки.

Timer t = new Timer(); 

t.schedule(new secondClass(), delay,period); 
//delay is the amount of time in milliseconds before execution. 
//period amount of time in milliseconds between subsequent executions. 

Совет: я бы изменить имя класса SecondClass, поскольку имена классов используют быть capitaliced.

+0

Спасибо, но где именно эта функция должна быть написана? Внутри какого класса/метода? – Pete

+0

, где бы вы ни хотели начать вторую нить. в oncreate может быть хорошо –

+0

пожалуйста, не забудьте принять ответ, если он сделал работу –

Смежные вопросы