2013-04-17 10 views
15

に活動を開始するには通常、私はこのコードで活動を開始します。アンドロイド:どのようにバックグラウンド

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

しかし、どのようにそれがバックグラウンドに残っているので、私が活動を開始していますか?

+0

あなたにはに言った代わりに活動 – Selvin

+1

の背景を使用サービスで何かをする必要がある場合コメントと回答があれば、バックグラウンドで活動を開始することはできません(**サービス**を使用する必要があります)。 – Leeeeeeelo

+1

私はサービスがバックグラウンドプロセスに使用されていることを知っています。しかし、問題は '私はバックグラウンドプロセスのためにアクティビティを使うべきか'ではありませんでした。代わりに、アクティビティの初期化時間を事前に開始することでスピードアップできるかどうかをテストするだけです。それが普通の活動であれば、不可能であるように見えます。質問に答える時間を費やした皆様に感謝します! – digitalfootmark

答えて

0

アクティビティは、通常、ユーザーに表示されることを意味します。 UIを必要としない場合は、Activityをサブクラス化する必要はありません。ご自分のタスクにServiceまたはIntentServiceを使用することを検討してください。または、アクティビティのテーマを.NoDisplayに設定することもできます。 uはUIの更新とバックグラウンドで実行時間の長いタスクを実行したい場合は

2

Uは3つの事

を行うことができます。 Asyntaskを使用します。 長時間実行しているタスクをバックグラウンドで実行したい場合は、intentserviceを使用してください。 あまり重すぎないようなバックグラウンドタスクをしたいのであれば、少し仕事をしてください。

+0

サービスはUIスレッドで実行されるため、重いタスクをアプリで使用するとhang.uはワーカースレッドを持つサービスを使用できます。 –

+0

IntentServiceを使用すると、UIが閉じられていても実行されていなくても、IntentServiceを起動すると、実行され続けますか? –

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

コールOnCreateイベントでのサービスを() -

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

メインアクティビティの 'onCreate()'でアクティビティを閉じる 'this.finish();'も追加してください。 –

関連する問題