screen命令

screen命令也可让程序在后台运行,screen命令会单独打开一个新的窗口。

命令1:

screen

此命令会直接创建一个screen窗口,但是screen名称不容易区分,如果只要一个后台项目要运行,可以使用次命令。

命令2:

screen -S name

此命令会创建一个名称为name的窗口,当有多个项目在后台运行的时候,推荐使用次命令。

在新窗口中运行好程序后,先按下CTRL+A,然后再按D就可回到最开始的旧窗口。
如果要查看通过screen运行的后台程序,输入如下命令即可:

screen -ls

如果要恢复或者杀死某个screen窗口,通过会话id即可执行,如上图中所示,name窗口的会话id为30037
恢复窗口:

screen -r 30037

杀死窗口,运行如下命令即可

screen -S 30037 -X quit

package indi.atigger.cochelper

import android.content.ComponentName
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toUri


/**
 * MainActivity.kt
 *
 * @author atigger
 *
 * create on 2022/12/9
 */

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val button: Button? = findViewById(R.id.button)
        val button1: Button? = findViewById(R.id.button2)
        val editText: EditText? = findViewById(R.id.editTextTextPersonName)
        val textView2: TextView? = findViewById(R.id.textView2)
        val textView: TextView? = findViewById(R.id.textView)
        val toast: Toast =
            Toast.makeText(applicationContext, "暂不支持此链接\n国服和国际服数据不互通", Toast.LENGTH_SHORT)
        val componentName = ComponentName(
            "com.tencent.tmgp.supercell.clashofclans",
            "com.supercell.titan.tencent.GameAppTencent"
        )

        /**
         * 接收intent请求
         */
        val intent = intent
        val scheme = intent.scheme
        val uri = intent.data
        if(uri!=null){
            var urlText:String = uri.toString()
            if(urlText.indexOf("=tencent") != -1 || urlText.indexOf("=IOS") != -1 || urlText.indexOf("=iOS") != -1 || urlText.indexOf("=ios") != -1){
                intent.component = componentName
                intent.setData(uri)
                startActivity(intent)
            }else{
                toast.show()
            }
        }
        /**
         * 使用阵型点击事件,替换链接关键字之后通过intent打开应用
         */
        button?.setOnClickListener {
            var urlText: String = editText?.text.toString()
            if(urlText.indexOf("=tencent") != -1 || urlText.indexOf("=IOS") != -1 || urlText.indexOf("=iOS") != -1 || urlText.indexOf("=ios") != -1){
                var startNum: Int = urlText.indexOf("?")
                urlText = urlText.substring(startNum + 1)
                urlText = "clashofclans://" + urlText
                intent.component = componentName
                intent.setData(urlText.toUri())
                startActivity(intent)
            } else {
                toast.show()
            }
        }

        /**
         * 重置按钮
         */
        button1?.setOnClickListener {
            editText?.text = null;
        }

        /**
         * 开源地址
         */
        textView?.setOnClickListener {
            val intent = Intent(Intent.ACTION_VIEW).apply {
                data = Uri.parse("https://github.com/atigger/COC-Helper")
            }
            startActivity(intent)
        }

        /**
         * 教程按钮
         */
        textView2?.setOnClickListener {
            val intent = Intent(Intent.ACTION_VIEW).apply {
                data = Uri.parse("https://b23.tv/CfibBOh")
            }
            startActivity(intent)
        }
    }
}