当前位置: 首页 > 知识库问答 >
问题:

切换到横向模式android时出现意外错误

仲孙昊焱
2023-03-14

当我将活动更改为横向模式时,我遇到了一些意外的服务泄漏错误。应用程序运行良好,错误仅显示在logcat中。

logcat错误为:

E/ActivityThread(16640):活动com。亚马逊。hsyal。用户界面。VoltageSODLoggerActivity已泄漏ServiceConnection com。亚马逊。hsyal。用户界面。电压对数活性$1@41461908最初是绑定在这里的

E/ActivityThread(16640):android。应用程序。ServiceConnectionLeaked:活动com。亚马逊。hsyal。用户界面。VoltageSODLoggerActivity已泄漏ServiceConnection com。亚马逊。hsyal。用户界面。电压对数活性$1@41461908最初是绑定在这里的

E/ActivityThread(16640):在android上。应用程序。LoadedApk$ServiceDispatcher。(LoadedApk.java:999)

E/ActivityThread(16640):android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:893)

E/ActivityThread(16640):android.app.ContextImpl.bind服务(ContextImpl.java:1139)

E/ActivityThread(16640):android.content.ContextWrapper.bind服务(ContextWrapper.java:386)

E/ActivityThread(16640):在com.amazon.hsyal.ui.VoltageSODLoggerActive$2.on点击(VoltageSODLoggerActivity.java:96)

E/ActivityThread(16640):在android上。看法看法performClick(视图.java:3538)

E/ActivityThread(16640):在android.view.查看$PerformClick.run(View.java:14132)

E/ActivityThread(16640):在android上。操作系统。处理程序。handleCallback(Handler.java:605)

E/ActivityThread(16640):在android上。操作系统。处理程序。dispatchMessage(Handler.java:92)

E/ActivityThread(16640):android.os.Looper.loop(Looper.java:137)

E/ActivityThread(16640):在android上。应用程序。活动线程。main(ActivityThread.java:4492)

E/ActivityThread(16640):在java。郎。反思。方法invokenactive(本机方法)

E/ActivityThread(16640):java.lang.reflect.Method.invoke(Method.java:511)

活动线程(16640):在com.Android内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:784)

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)

E/ActivityThread(16640):在dalvik。系统国家艺术。主(本机方法)

对应的onCreate代码是:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    PowerManager mgr= (PowerManager) this.getSystemService(Context.POWER_SERVICE);
    wk = mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyWakeLock");
    wk.acquire();
    intent = new Intent(getBaseContext(), LoggerService.class);
    Button start_stop_button = (Button) findViewById(R.id.start_stop_button);
    start_stop_button.setOnClickListener(startStopButtonListener);

    if(getServiceInfo(this)){
        start_stop_button.setText("Stop Service");

    }else
    {   start_stop_button.setText("Start Service");

    }

}

我想在我创建服务连接实例的地方一定有什么问题。目前我正在onCreate中这样做,我是否需要在其他地方也这样做?

共有2个答案

万俟玉书
2023-03-14

当方向更改时,将重新创建活动,即调用onDestroy()并再次调用onCreate。

您可能忘记了在onDestroy()方法中释放唤醒锁。将wake锁设为成员变量并调用

wk.release();

在onDestroy()方法中。

顾恺
2023-03-14

在你的代码中,我看不到你的服务连接的实例,只有一个意图(正如你可能知道的,它不是到你的服务的连接)。。。

您可能希望在onStart()中绑定您的服务,并在活动的onStop()方法中取消绑定您的服务。此外,我建议您将WakeLock移动到您的Service类中,如果您不需要您的活动一路显示...

看见http://developer.android.com/reference/android/app/Service.html有关服务类以及如何从服务绑定/取消绑定的更多详细信息(而不是使用startService()和stopService())

 类似资料:
  • 问题内容: 我试图对我的应用程序强制使用“横向”模式,因为我的应用程序绝对不是针对“人像”模式设计的。我怎样才能做到这一点? 问题答案: 现在可以使用HTML5 Webapp清单。 见下文。 原始答案: 您不能将网站或Web应用程序锁定在特定方向。它违反了设备的自然行为。 您可以使用CSS3媒体查询来 检测 设备方向,如下所示: 或通过绑定JavaScript方向更改事件,如下所示: 2014年1

  • 添加简单Java库(Android Studio中的新模块)后出现令人沮丧的错误。我读过很多类似的问题,但找不到任何解决方案,有人能帮我吗? 通用域名格式。Android石斑鱼类。常见的内部的LoggedErrorException:无法运行命令:C:\Android\Android sdk\build tools\19.1.0\dx。bat—dex—输出C:。。。\AndroidStudioPr

  • 这里我有一个表单的html代码。创建事件的表单。它要求用户提供一些信息,然后他必须按下创建按钮。 这里是我的表单的java代码。 我不知道为什么按下按钮后,它会给我一个错误,比如: 白标签错误页。此应用程序没有/Error的显式映射,因此您将其视为回退。 Tue Dec 29 00:24:57 EET 2020有一个意外错误(type=For的,状态=403)。禁止。 配置类

  • 本文向大家介绍Android横竖屏幕切换小结,包括了Android横竖屏幕切换小结的使用技巧和注意事项,需要的朋友参考一下 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换进行关闭。 AndroidManifest.xml activity_main.xml MainActivity.java 以上内容给大家

  • 本文向大家介绍Android 屏幕横竖切换详解,包括了Android 屏幕横竖切换详解的使用技巧和注意事项,需要的朋友参考一下 Android 屏幕横竖切换 Android 里面控制Activity的方向,只要在AndroidManifest.xml里面对应的Activity节点下加一句 android:screenOrientation="landscape"(landscape是横屏,port