的AsyncTask類我有兩個按鈕。第一個啓動mediaplayer和第二個取消它: mediaplayer是在AsyncTask
,我用(線程 - 時間)重複它 我需要mediaplayer播放,直到用戶按下取消 當我開始運行時和我按取消它停止(當我不出去的頁面佈局 - )取消的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();
還在等待沒有運行
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 2013-04-23 14:52:53
一些評論:1.您正在使用2個用戶提出問題。這真是令人困惑。 2.你需要學習添加評論而不是你的問題的答案。 3.發佈你的logcat – DigCamara 2013-04-23 16:44:36
看看我更正的答案 – DigCamara 2013-04-23 16:55:52