Ответ 1
Вы должны использовать Services для этого - кроме того, Описание класса.
Обычно я запускаю действие с помощью этого кода:
Intent i = new Intent(context, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Но как мне начать работу так, чтобы она осталась в фоновом режиме?
Вы должны использовать Services для этого - кроме того, Описание класса.
Чтобы сохранить активность в фоновом режиме, можно использовать службы. Создайте справочную службу, например:
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
public class BackgroundService extends Service {
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
BackgroundService getService() {
return BackgroundService.this;
}
}
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
Вызовите службу в oncreate() вашего основного действия следующим образом:
startService(new Intent( MainActivity.this,BackgroundService.class));
U может сделать три вещи
Если вы хотите выполнить долго выполняющуюся задачу в фоновом режиме с обновлением пользовательского интерфейса. Используйте Asyntask. Если вы хотите выполнить многолетнюю задачу в фоновом режиме, используйте intenservice. Если вам нужна некоторая фоновая задача, которая не слишком тяжелая, используйте некоторые сервисы.
Активность обычно должна отображаться пользователю. Если вам не нужен какой-либо пользовательский интерфейс, вам, возможно, вообще не требуется подкласс Activity. Рассмотрите возможность использования службы или IntentService для своей задачи. Или вы можете задать тему активности .NoDisplay
.