によって開始された 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()
。
しかし、ホームスクリーンでアイコンを押してプログラムを起動すると、同じフローでonNewIntent
inが呼び出されます。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 に表示されません。