6

SingleTask であり、「テスト」スキームをリッスンできるアプリケーションがあります。

ボタンをクリックすると (コードを参照)、自分自身を再起動し、onNewIntent が呼び出されて「テスト」インテントが与えられます (これで、フラグメントをプッシュすることでこれに反応する可能性があります)

ここで、ホームを押してアプリケーションランチャーを開いてアプリケーションを再入力すると、onNewIntent を呼び出したいのですが、アクションをやり直したくないので (フラグメントのプッシュなど)、空のインテントで行います。しかし、onNewIntent は、アクティビティを起動するために使用された最後のインテント、つまり「テスト」インテントを提供しています。

同じフラグメントをプッシュしないようにするにはどうすればよいですか? 自分の ID を使用せずに良い方法はありますか。

public class OnNewIntentTestActivity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Log.e("", "on create");

    ((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.e("", "Relaunch activity");
            startActivity(new Intent(Intent.ACTION_VIEW,  Uri.parse("testing://hello")));

        }
    });
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Log.e("", "onNewIntent: " + (intent == null? "none" : (intent.getAction() + ":" + intent.getData())));
}
}
4

1 に答える 1

0

setIntent(null); onNewIntent で必要なデータを取得した後

于 2013-07-03T08:28:56.937 に答える