【问题标题】:Android how to hold native library when application stoppedAndroid如何在应用程序停止时保存本机库
【发布时间】:2017-01-05 10:57:09
【问题描述】:

我开发了一个具有 C++ 后台任务的应用程序。任务在 1 分钟内工作。 IntentServiсe 每 5 分钟调用一次任务。如果应用程序被卸载,我的 IntentService 会加载共享库并成功调用原生任务。

但是当应用程序正在运行并调用任务时,在我停止应用程序之后,任务也停止了。

所以我需要在应用程序停止后保存本机任务的方法。

如果您有任何想法,请帮助我。

【问题讨论】:

    标签: java android service android-ndk java-native-interface


    【解决方案1】:

    我不确定,

    但我认为您选择的服务选项不是最佳选项(意图服务),它面向短任务,而且如果我错了,服务会在应用程序被销毁时停止。

    见:

    Service vs IntentService

    https://developer.android.com/guide/components/services.html

    在您的情况下,您需要一个可以使用 IPC(进程间通信)绑定的服务。或 RPC 调用。

    在我看来,你需要一个基本的服务:

    public class BasicService extends Service {
        public BasicService() {
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    
        @Override
        public void onCreate() {
            Toast.makeText(this, "My service is created", Toast.LENGTH_LONG).show();
    
        }
    
        @Override
        public void onStart(Intent intent, int startId) {
            // For time consuming an long tasks you can launch a new thread here...
            Toast.makeText(this, " Starting service", Toast.LENGTH_LONG).show();
    
        }
    
        @Override
        public void onDestroy() {
            Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
    
        }
    }
    

    最后一件事,您需要停止手动使用,因为您不想创建 stopSelf() 函数。

     stopService(new Intent(this, BasicService.class));
    

    最后如果你想启动一个服务:

    startService(new Intent(this, BasicService.class));
    

    希望这会有所帮助。

    干杯。

    乌奈。

    【讨论】:

    • 如果我在 IntentService 中启动一个简单的循环,如果我停止应用程序,它并没有停止。所以我认为,我的问题在于应用程序停止时卸载本机库。但我不知道,如何解决。
    • 没有代码我看不到你的问题。您能否在您的问题中发布和组织您的代码?
    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多