public final void run(EventTaskRunner runner) {
		try {
			if(Log.ON){Log.d("taskrunner","["+mid+"]"+"action:"+toString());}
			action(runner);
			if (isKeep()) {
				if(Log.ON){Log.d("taskrunner","["+mid+"]"+"action: next keep");}
				runner.start(this);				
			} else if(runner != null&&mNextAction != null&&isNext()) {
				if(Log.ON){Log.d("taskrunner","["+mid+"]"+"action: next "+mNextAction.toString());}
				runner.start(mNextAction);	
			} 
		} catch(Throwable t) {
			t.printStackTrace();
			if(mErrorAction != null) {
				runner.start(mErrorAction);
			}
		} 
	}