FLAG_ACTIVITY_NEW_TASKとtaskAffinityの関係
この2つの項目を組み合わせることで、Intent使用時に新しいタスクスタックを開始するかどうかを制御することができます。実際にどのように連携して新しいタスクスタックを開始するのか、その例を示します。
I. taskAffinityの設定のみ。
MainActivity.java。
package com.example.administrator.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String TAG = "yayun";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate: taskId" + getTaskId());
setContentView(R.layout.activity_main);
}
public void launch(View view) {
Intent intent = new Intent();
intent.setAction("yayun");
startActivity(intent);
}
}
Intent量を暗黙のうちに開始する。
ActivityTest.java。
package com.example.administrator.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
TextView; /**
TextView; /** * Created by Administrator on 2016/7/31.
//
public class ActivityTest extends Activity {
public static final String TAG = "yayun";
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate: taskId" + getTaskId());
setContentView(R.layout.activity1_layout);
mTextView = (TextView) findViewById(R.id.tv);
}
}
AndroidMainifest.xml。
<?xml version="1.0" encoding="utf-8"? >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ActivityTest"
android:taskAffinity=".yayun">
<intent-filter>
<action android:name="yayun" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
暗黙のスタートIntentは、ああ、一般的にシステムのIntentは、ブラウザを起動するように、暗黙のスタート、SMSエディタを開始し、適切なアクションを設定します。
ActivityTestにtaskAffinityプロパティが設定されています。
この時点でプログラムを実行します。
ボタンをクリックすると、ActivityTestにジャンプします。
この時点でログメッセージを見てください。
これはtaskIdです。
2つ目は、ダブルビッチとウォール。
MainActivity起動時にFlagを追加する ie.
public void launch(View view) {
Intent intent = new Intent();
intent.setAction("yayun");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
この時点で再スタート。
2つのtaskIdは異なっています。
FLAG_ACTIVITY_NEW_TASKは、起動時に新しいタスク・スタックを開くかどうかを動的に制御できることがわかりますので、より柔軟性が高いのではないでしょうか?
誰かが起動したときに新しいタスク・スタックを開きたい場合、その人が起動時にFLAG_ACTIVITY_NEW_TASKを追加することに同意しなければならず、設定ファイルでそれを設定する必要があります。
taskAffinity、両刀使いの組み合わせは無敵です。
第三に、ただFLAG_ACTIVITY_NEW_TASK 、これは自分でテストすることができ、この時点でも同じタスクスタック:を追加します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例