我的项目有一个onNewIntent()问题,并寻求帮助。
背景: 我在我的应用程序中处理一个类似“screenlock”的应用程序;有一个两个进程,ProcessA中的一个服务,它将在屏幕关闭时创建一个活动(接收SCREEN_OFF意图)。并且创建的活动将在进程B中。
我想在我的onNewIntent()中做一些工作,但我发现它在onResume之后显示了一些特殊的操作。我将用日志进行解释。
10-30 13:50:13.334 3619-3619/com.luisclient:lock D/luisDebug: invoke1
10-30 13:50:14.415 3564-3564/com.luisclient D/luisDebug: onCreate 5837
10-30 13:50:14.465 3564-3564/com.luisclient D/luisDebug: onResume 5837
10-30 13:50:14.485 3564-3564/com.luisclient D/luisDebug: onPause 5837
上面是第一次创建活动,因为屏幕现在关闭,onPause立即在onResume()之后调用。
10-30 13:50:16.828 3564-3564/com.luisclient D/luisDebug: onResume 5837
10-30 13:50:18.779 3564-3564/com.luisclient D/luisDebug: onPause 5837
以上是日志屏幕。
10-30 13:50:28.099 3619-3619/com.luisclient:lock D/luisDebug: invoke1
10-30 13:50:28.159 3564-3564/com.luisclient D/luisDebug: onResume 5837
10-30 13:50:28.169 3564-3564/com.luisclient D/luisDebug: onPause 5837
10-30 13:50:28.169 3564-3564/com.luisclient D/luisDebug: on new intent
上面 是我的问题,当屏幕打开时,我离开活动而不完成它。过了一会儿,我按下电源键,并在onResume()之后调用 onNewIntent(),因为日志显示
10-30 13:50:33.174 3564-3564/com.luisclient D/luisDebug: onResume 5837
10-30 13:50:34.565 3564-3564/com.luisclient D/luisDebug: onPause 5837
10-30 13:50:34.635 3619-3619/com.luisclient:lock D/luisDebug: invoke1
10-30 13:50:34.645 3564-3564/com.luisclient D/luisDebug: on new intent
10-30 13:50:34.685 3564-3564/com.luisclient D/luisDebug: onResume 5837
10-30 13:50:34.695 3564-3564/com.luisclient D/luisDebug: onPause 5837
但奇怪的是:如果我按屏幕上的活动关闭电源, onNewIntent在onResume之前调用。
任何人都能解释为什么会这样吗?这将非常有帮助。
这是AndroidManifest.xml和启动函数的代码。
<activity
android:name=".ui.activity.LockActivity"
android:label="@string/empty"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="com.luisclient.lock"
android:theme="@style/LockScreenTheme" />
<service
android:name=".service.LocService"
android:exported="false"
android:process=":lock" />
public static void invoke(Context context, boolean firstComeIn) {
Log.d("invoke2 " );
Intent intent = new Intent(context, LockActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}