Для принятия параметров вы должны использовать функции!
Однако $ @ get интерпретируется при создании псевдонима, а не во время выполнения псевдонима, а escape-код не работает. Как решить эту проблему?
Вам нужно использовать функцию оболочки вместо псевдонима, чтобы избавиться от этой проблемы. Вы можете определить foo следующим образом:
function foo() { /path/to/command "$@" ;}
ИЛИ
foo() { /path/to/command "$@" ;}
Наконец, вызовите ваш foo (), используя следующий синтаксис:
foo arg1 arg2 argN
Убедитесь, что вы добавили файл foo () в ~/.bash_profile
или ~/.zshrc
.
В вашем случае это будет работать
function trash() { mv $@ ~/.Trash; }
Вам нужно будет использовать thread pool Executor
для выполнения AsyncTask
. Реализация по умолчанию использует последовательный исполнитель, работающий на одном потоке
. Создайте ThreadPoolExecutor , а затем используйте
AsyncTask executeOnExecutor вместо просто выполните метод
Другой вариант - использование AsyncTaskCompat из библиотеки поддержки v.4.
AsyncTaskCompat.executeParallel(new AsyncTask<Void, Void, Object>() {
@Override
protected Object doInBackground(Void... params) {
// do your parallel task here
return null;
}
@Override
protected void onPostExecute(Object result) {
// and fetch result
}
});
В AsyncTask произошли изменения в выпуске Honeycomb. В старых версиях был пул потоков из 10 потоков, поэтому вы могли запускать 10 задач параллельно. Но для Honeycomb и up по умолчанию используется последовательный исполнитель, который выполняет задачи один за другим. Но вы можете передать ThreadPoolExecutor
для выполнения:
if (Build.VERSION.SDK_INT >= 11) {
//--post GB use serial executor by default --
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
//--GB uses ThreadPoolExecutor by default--
task.execute();
}
new Void[]{}
; опуская его будет достаточно.
– Paul Lammertsma
27 March 2013 в 13:02