在我的应用程序中未调用onNewIntent或订单错误

时间:2015-10-30 06:13:58

标签: android

我的项目有一个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);
    }

0 个答案:

没有答案