2

によって開始された 1 つのアクティビティを再開できませんPendingIntent

「再起動できません」は何も意味しません。たとえば、アクティビティが既に実行されている場合、 onCreateまたはonNewIntent呼び出されません。startActivity()

再起動できない MainActivity という名前のアクティビティは singleTop であり、 onNewIntentをオーバーライドします

についてのマニフェストは次のMainActivityとおりです。

 <activity
            android:name="com.example.MainActivity"
            android:label="@string/app_name" 
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

まず、MainActivity保留中の意図を持つ通知によって が開始されます。

私の PendingIntent は次のとおりです。

Intent iS = new Intent(this,MainActivity.class);
iS.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendindIntent pi = PendingIntent.getActivity(this, 0, iS, 
PendingIntent.FLAG_UPDATE_CURRENT);

そしてMainActivity実行startService()し、サービスを実行しsendBroadcast()、BroadcastClass を実行しますstartActivity(Intent(this,MainActivity.class))

Jere は BroadcastClass です。

public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context,MainActivity.class);

    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}

その後onNewIntent()は...呼び出されませんonCreate()

しかし、ホームスクリーンでアイコンを押してプログラムを起動すると、同じフローでonNewIntentinが呼び出されます。MainActivity

編集: onNewIntent はこちらです。

protected void onNewIntent(Intent intent) {  
   Log.d("onNewIntent","onNewIntent");
   String SOMETHING = intent.getStringExtra("SOMETHING");

    LinearLayout ll = (LinearLayout)findViewById(R.id.ll2);
    ll.removeAllViews();
    TextView textview1 = (TextView)getLayoutInflater().inflate(R.layout.textview, null);

    textview1.setText(SOMETHING);
    ll.addView(textview1);
}

「onNewIntent」は LogCat に表示されません。

4

2 に答える 2