У меня есть две кнопки. Первый, чтобы запустить mediaplayer, а второй, чтобы отменить его: mediaplayer находится в AsyncTask
, и я использую (thread -while), чтобы повторить его. Мне нужен медиаплеер для воспроизведения, пока пользователь не нажмет на отмену , когда я запустил его, и когда я нажимаю отменить его останавливает (когда я не выхожу на страницу-layout-,)отменить класс AsyncTask в android
private DoSomething doSomething;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
final MediaPlayer mp;
mp=MediaPlayer.create(this,R.raw.ab);
//===================================================
final Button first=(Button)findViewById(R.id.button1);
final Button second=(Button)findViewById(R.id.button2);
first.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//start your asynctask
if(doSomething == null || doSomething.isCancelled()){
doSomething = new DoSomething();
doSomething = (DoSomething) doSomething.execute();
} }
});
second.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
doSomething.cancel(true);
} });}
проблема: когда я выхожу раскладку и вернуться, чтобы отменить AsyncTask есть aproblem в
doSomething.cancel(true);
Поскольку нулевой указатель doSomething видит asyntask не запущенным во время его запуска
Я использую Status g=doSomething.getStatus();
это ОЖИДАНИЕ не RUNNING
class DoSomething extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
while(true){
if(isCancelled()){
break;
}
final MediaPlayer mp;
mp=MediaPlayer.create(getBaseContext(),R.raw.ab);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
try {
Thread.sleep(8 * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace() }}
return null;
}}
почему вам нужен AsyncTask? – pskink
Несколько комментариев: 1. Вы используете 2 пользователей, чтобы задать вопрос. Это действительно сбивает с толку. 2. Вам нужно научиться добавлять комментарии вместо ответов на свой вопрос. 3. Отправьте свой логарифм – DigCamara
Посмотрите на мой исправленный ответ – DigCamara