1

即使使用前台服务,我的 android 应用程序也会在后台被杀死。这是服务的清单条目:

 <service
            android:name=".MyService"
            android:icon="@drawable/icon"
            android:label="TritonHK"
            android:process=":my_process" >
        </service>

这是服务代码

 MLog.w(getClass().getName(), "TritonHK started");

         Notification note=new Notification(R.drawable.icon,
                                             "TritonHK is running",
                                             System.currentTimeMillis());
         Intent i=new Intent(this, BGMessages.class);

         i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|
                    Intent.FLAG_ACTIVITY_SINGLE_TOP);

         PendingIntent pi=PendingIntent.getActivity(this, 0,
                                                     i, 0);

         note.setLatestEventInfo(this, "TritonHK",
                                 "TritonHK",
                                 pi);
         note.flags|=Notification.FLAG_NO_CLEAR;

         startForeground(1337, note);

这是我开始服务的方式:

Intent i=new Intent(this, MyService.class);

        startService(i);

我正在我的第一个活动的 onCreate 中启动服务。

我通过 android:process=":my_process"从清单中的服务中删除来克服这个错误,现在它看起来像这样:

 <service
                android:name=".MyService"
                android:icon="@drawable/icon"
                android:label="TritonHK"
                 >
            </service>

但现在我面临一个有趣的问题。

当我在我的设备上安装应用程序并安装成功后,我单击done并从图标启动我的应用程序,它运行良好。

但是安装成功后,如果我通过单击open按钮启动应用程序,它第一次在后台被杀死。然后,如果我强制关闭应用程序并再次从图标启动它,那么它运行良好。

我很困惑出了什么问题。请帮我

4

2 回答 2

0

服务会根据资源情况被杀死。如果安装程序仍在运行,它当然具有高优先级,因为它对用户可见。您是否在从安装程序中使用open启动服务时检查了内存消耗?

于 2013-02-07T11:57:15.000 回答
0

我已经用下面的代码解决了这个问题并发布了相同的代码,以便其他人也可以使用它。

我已将以下代码添加到我的启动器活动的创建中。

if (!isTaskRoot()) {
            final Intent intent = getIntent();
            final String intentAction = intent.getAction();
            if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) &&
                    intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
                finish();
            }
        }
于 2013-02-12T05:20:33.400 回答