launcher、kdesktop源码注释

一、launcher

有远程桌面client正连接着时,安装launcher.apk,无论是用android自带的资源管理器中安装,还是调用SDL_UpdateApp安装,安装完apk后,android自动运行新版本laucher,很快。这个新启动launcher会被android杀死。

没找到原因,但发现一个方法:若当前没有远程桌面client正连接着,这个安装后自动运行的新版本launcher不会被android杀死

正是因为这方法,launcher源码,在实现升级时,调用SDL_UpdateApp前会执行instance->unregister_server(server_rdpd),目的是关闭所有正连接着client。这里关闭没用更直接的像RdpServer::CloseAllConnection(),是既然升级后肯定要退出原launcher,那不如简单、彻底地关server_rdpd服务。

但是,升级时遇到另一个问题。安装完后launcher.apk后,android随机会发生没有自动运行新版本launcher。测试下来,即使一直没有client连接着,也会出现这个问题。而在出问题时,android确定是调用了startActivity。

<aosp>/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
------
public class InstallAppProgress extends Activity implements View.OnClickListener, OnCancelListener {
        if (getIntent().getBooleanExtra("AutoInstall", false) && enabled) {
            // [leagor added]
            // copy from onClick(View v).v==mLaunchButton
            try {
                // 在出现随机没有自动运行新版本launcher时,也会进入这在
                // 而且生成mLaunchIntent时用的mAppInfo.packageName是com.kos.launcher
                startActivity(mLaunchIntent);
            } catch (ActivityNotFoundException e) {
                Log.e(TAG, "Could not start activity", e);
            }
            clearCachedApkIfNeededAndFinish();
            return;

        } else if (enabled) {
            mLaunchButton.setOnClickListener(InstallAppProgress.this);
        } else {
           mLaunchButton.setEnabled(false);
        }
    }
}

没到找这问题原因。要是一直没解决,只能建议用户若是1分钟后,client还是无法连接,那重启设备。

 

全部评论: 0

    写评论: