0

起動時にUIなしで起動し、ユーザーがアイコンをタップするとUIで再起動するアクティビティを作成したいと思います。このアクティビティの複数のインスタンスは必要ありません。ユーザーがアイコンをタップしたときに(アクティビティがすでに実行されている)、アプリが再起動され(UIを表示するため)、古いインスタンスが破棄されるようにするにはどうすればよいですか?「singleTask」はその仕事をしますか?

4

1 に答える 1

0

singleTaskは、アクティビティが複数回読み込まれるのを防ぐために必要なものです。

デバイスの起動時に何かを起動するには、起動をリッスンする必要があります。

public class BootReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        startService(this, new Intent(Intent.ACTION_SYNC, null, this, SomeIntentService.class);
    }
}

のようなマニフェストで;

    <receiver android:name="BootReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

ただし、プロセスを長時間実行したい場合は、フォアグラウンドサービスが必要です。

http://developer.android.com/reference/android/app/Service.html#startForeground(int、android.app.Notification

サービスを永続的な状態にする方法に関する素晴らしいドキュメントがあります。IntentServiceを実行するのは非常に簡単です。単一のメソッドをオーバーライドする必要がありますhttp://developer.android.com/reference/android/app/IntentService.html#onStartCommand(android.content.Intent、int、int

次に、おそらくsharedpreferencesまたはデータベースにデータを保存すると、アクティビティがデータストアにアクセスします。

于 2012-08-06T06:48:16.033 に答える