相关疑难解决方法(0)

应用程序关闭后无法使android服务保持活动状态

我正在尝试生成一个始终保持活动的服务,即使用户关闭了应用程序.根据这些线程

关闭应用程序后,保持位置服务活动

应用程序关闭时Android服务停止

Android:当应用程序被杀时,保持服务运行

这可以通过IntentServices或Service.START_STICKY来完成

然而,我尝试了两种类型的服务而没有成功.换句话说,当用户关闭应用程序时,我的服务就会被杀死.有人可以指出这是否可以做到以及如何做?这是我没有成功的尝试:

使用IntentService:

public class MyIntentService extends IntentService {
    private final int mPollingTimeMS = 500;
    private int mInitializationPollingCount = 0;
    private Thread mPollThread;
    public MyIntentService() {
        super("MyIntentService");
    }
    @Override
    protected void onHandleIntent(Intent intent) {
        mPollThread = new Thread() {
            public void run() {
                while (true) {
                    try {
                        Log.e(Constants.Engine.LOGGER_TAG_DEV,
                                "SDK Service Running: " +
                                        mInitializationPollingCount * mPollingTimeMS +
                                        "ms have elapsed");
                        mInitializationPollingCount++;
                        sleep(mPollingTimeMS);

                    } catch (Exception e) {
                        StackTraceElement trace = new Exception().getStackTrace()[0];
                        Logger.e(Constants.Engine.LOGGER_TAG_APP, "[Exception:" + …
Run Code Online (Sandbox Code Playgroud)

android android-service

11
推荐指数
2
解决办法
3万
查看次数

流程和服务之间的区别?

我想知道android应用程序中的进程和服务之间的区别是什么?我尝试了很多有关此主题的研究,但还没有弄清楚我的基础知识...请帮忙吗?

service android process

6
推荐指数
1
解决办法
6476
查看次数

我什么时候应该使用 android:sharedUserID 和 android:process?

我几乎准备好将应用程序上传到 Google Play,但我想做得好,没有错误(或试图避免错误),所以我遵循了这个问题:在将 android 应用程序发布到市场之前的“待办事项”列表[关闭]

但是,在那里我看到了一个让我更加关注的答案,因为我不知道这些属性。是我参考的答案。

答案建议声明android:processandroid:sharedUserId属性,因此我查找了该文档。

寻找有关这两个属性的一些信息,我发现这个答案android:process属性,这让我看到更清晰这个属性如何都可以使用。我可以从那里得到的是,您可以声明您的活动将在不同的进程中启动,以避免在运行主进程时出现内存限制。如果我错了,请纠正我。

远没有遇到android:sharedUserId属性的详细文档,我尝试在这里查看一些问题:

我可以从那里得到的是我可以在应用程序之间共享一些信息。如果我错了,再次纠正我。

在我的应用程序中,我只在其中使用 Google 地图,所以我想到了一些问题:

  • 我应该总是声明android:processandroid:sharedUserId作为我之前链接的答案所建议的吗?

  • 如果是真的,是否会产生一些安全问题?我不知道这是否可行,但我认为如果某些应用程序可以访问您的数据应用程序,那么这可能是一个安全问题(取决于您的应用程序中拥有的数据类型)。

  • 我应该用什么名字android:sharedUserId?它可以是我想要的任何名称还是必须是特定名称(例如,包名称)以便其他应用程序可以访问我的应用程序数据?那是android:sharedUserId公开的吗?

  • 如果我现在不希望我的应用程序共享信息,但将来我想这样做。我应该在我android:sharedUserId第一次在市场上发布时声明吗?那么其余的应用程序可以访问我的数据吗?

  • android:process例如,我应该声明执行我的地图Fragment吗?

注意:我对这些属性完全感到困惑,所以也许问题的格式并不完全正确(在句法或概念上)。请纠正我在这个问题上可能犯的任何错误。我试图复制尽可能多的信息,但这还不足以解决我的疑虑。

提前致谢!

android

6
推荐指数
0
解决办法
1131
查看次数

Android中的进程和单例

关于Android中的流程的三个问题.我正在开发一个应用程序.如果我在AndroidManifest.xml中声明要在另一个进程中运行的服务

<service android:name=".MyService" android:process=":MyProcess"/>
Run Code Online (Sandbox Code Playgroud)
  1. 这是否意味着将有两个JVM实例,一个由MyService使用,另一个由其他代码使用?

  2. 如果上面问题的答案是YES,那么它是否也意味着如果我有一个Activity和MyService使用的单例类,那么将为单例创建两个实例?

  3. 如何确保两个进程只创建和共享一个实例呢?更好地提供样本:)

==== ==== UPDATE

感谢您的所有评论和答案,遗憾的是,我的项目需要使用单独的服务流程,因为它具有长时间运行的后台任务.根据你的回复,我有第四个问题:

如果我需要跨进程和其他代码的进程传递一个非parcelable对象MyService.可能吗?如何?

singleton android android-service

5
推荐指数
1
解决办法
1164
查看次数

Android中的启动服务会在onCreate上调用应用程序

我正在使用启动Android服务,

startService(getApplicationContext(), MyService.class);
Run Code Online (Sandbox Code Playgroud)

我已经在AndroidManifest中正确定义了我的服务。现在,我从Application create调用上面的代码。

情况1:从应用程序onCreate()调用以上代码

  • 我看到Application.onCreate()被调用了两次。一种是所需的App创建,另一种是在调用startService时发生。

情况2:从应用程序中的Activity调用以上代码

  • 与情况1相同。

这是预期的行为吗?

我的Android清单代码要求:

    <service
            android:exported="false"
            android:enabled="true"
            android:name=".MyService"
            android:process=".MyService">
    </service>
Run Code Online (Sandbox Code Playgroud)

android android-intent android-service

4
推荐指数
1
解决办法
804
查看次数