我无法重新启动由PendingIntent
.
“无法重新启动”意味着什么,例如,当关于活动已经运行时,永远不会调用onCreate或onNewIntent 。startActivity()
名为 MainActivity 我无法重新启动的 Activity 是 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()
,广播类执行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()
。
但是,当通过在 homeScreen 上按下图标启动程序时,onNewIntent
inMainActivity
被同一流程调用。
编辑: 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 上。