Android:如何在后台启动Activity

通常我用这个代码开始一个活动:

Intent i = new Intent(context, MyActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); 

但是,我如何开始这个活动,留在后台?

Solutions Collecting From Web of "Android:如何在后台启动Activity"

您应该为此使用服务 – 另外还有类描述 。

要保持活动在后台运行,可以使用服务。 创build一个后台服务,如:

 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; } } 

在你的Main活动的oncreate()中调用这个服务 –

  startService(new Intent( MainActivity.this,BackgroundService.class)); 

你可以做三件事

如果你想在UI更新的背景下执行长时间运行的任务。 使用Asyntask。 如果你想在后台执行长时间运行的任务,只能使用intentservice。 如果你想要一些不太重的后台任务,一点工作就可以使用服务。

活动通常意味着向用户显示。 如果你不需要任何UI,你可能根本不需要inheritanceActivity。 考虑为您的任务使用即服务或IntentService。 或者你可以将Activity的主题设置为.NoDisplay