在应用被终止时导航到特定屏幕



对我来说有三个类别的警报,每个警报都将导航到各自指定的屏幕。在这里,当我广播时显示警报触发时的本地通知。在这里,我维护了一个额外的意图,它应该导航到哪个屏幕。因此,当我调用一个活动以在挂起的意图中导航时,onNewIntent方法正在处理屏幕导航。

private void showNotification(Context context) {
...
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("fragmentname", "firstCategory");
...
}

主要活动的 onNewIntent 方法

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String screenName = intent.getStringExtra("fragmentname");
if (screenName != null && screenName.equalsIgnoreCase("firstCategory")) {
moveToFirstCategoryScreen();
}
}

导航当前工作正常,直到应用程序位于前台或位于最近打开的应用程序中。但是,一旦我要从最近打开的应用程序中删除,当通知到达时,它不会导航到特定屏幕。

在调试时,我发现活动的 onNewIntent 方法没有调用。

当应用程序在后台时,我如何处理屏幕导航。

非常感谢您的帮助!

提前感谢!

编辑 06/04/2018

public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getName();
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
onNewIntent(getIntent());
}     

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String screenName = intent.getStringExtra("fragmentname");
if (screenName != null && screenName.equalsIgnoreCase("firstCategory")) {
moveToFirstCategoryScreen();
}
}
private void moveToFirstCategoryScreen() {
Intent intent = new Intent(this, FirstCategory.class);
startActivityForResult(intent);
}

}

在我的警报接收器中:

public class AlarmReceiver extends BroadcastReceiver {
public static final String TAG = AlarmReceiver.class.getName();

@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
//Acquire the lock
wl.acquire();
showNotification(context);
}

private void showNotification(Context context) {
...
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("fragmentname", "firstCategory");
...
}
}

清单:

...
<activity
android:name=".activity.MainActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
/>
...

在MainActivity 类的 onCreate() 方法中编写以下代码。

onNewIntent(getIntent())

最新更新