15

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

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

但是我如何启动活动以便将其留在后台?

4

4 回答 4

8

您应该为此使用服务——除了类描述

于 2013-04-17T10:13:29.377 回答
7

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

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));
于 2013-04-17T11:03:28.767 回答
2

你可以做三件事

如果您想通过 UI 更新在后台执行长时间运行的任务。使用异步任务。如果您想在后台执行长时间运行的任务,请仅使用 intentservice。如果您想要一些不太繁重的后台任务,请使用服务。

于 2013-04-17T10:19:19.900 回答
0

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

于 2013-04-17T10:15:44.027 回答