0

嗨,在我的 android 应用程序后台进程中,我需要调用我的课程的意图。但是当我通过任务管理器暂停应用程序时,我的活动被打开。请帮我解决这个问题。

这是我的代码:

intent = new Intent(Service.this,PushNotification.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

如果我没有设置标志(new_Task)我的应用程序强制关闭,我得到了异常。这是我在 logcat 中的错误:

01-16 16:23:44.139: E/AndroidRuntime(18251): FATAL EXCEPTION: main
01-16 16:23:44.139: E/AndroidRuntime(18251): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.app.ContextImpl.startActivity(ContextImpl.java:847)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at com.app.Service.MobilyzerService$ServerTask.onPostExecute(MobilyzerService.java:359)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at com.app.Service.MobilyzerService$ServerTask.onPostExecute(MobilyzerService.java:1)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.os.AsyncTask.finish(AsyncTask.java:602)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.os.AsyncTask.access$600(AsyncTask.java:156)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.os.Looper.loop(Looper.java:137)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at android.app.ActivityThread.main(ActivityThread.java:4441)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at java.lang.reflect.Method.invokeNative(Native Method)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at java.lang.reflect.Method.invoke(Method.java:511)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-16 16:23:44.139: E/AndroidRuntime(18251):    at dalvik.system.NativeStart.main(Native Method)

请指导我。

4

3 回答 3

1

如果您想在服务中调用意图,那么

将意图称为this.startService(intent);

(或者)

如果您想从活动中调用意图,则将其称为 startActivity(intent);

于 2013-01-16T10:25:49.340 回答
1

我的解决方案是

intent = new Intent(Service.this,PushNotification.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity( intent );
于 2013-01-16T10:30:44.707 回答
0

要打开Activity使用意图,请使用startActivity

代码将是

Intent inda = new Intent(getApplicationContext(),
NewDutyActivity.class);
inda.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
inda.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(inda);

我认为您正在尝试从 a 打开活动,service因为您正在尝试从不是它自身的 UI 组件启动 UI 组件,您会收到此错误。

因此,您必须添加new task flag您的意图。

于 2013-01-16T10:30:14.573 回答