91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

android singleinstance 如何確保唯一性

小樊
81
2024-11-27 05:17:40
欄目: 編程語言

在Android中,Single Instance(單實例)模式確保應用程序只有一個運行實例。為了實現這一目標,您可以使用以下方法:

  1. 使用文件鎖(File Locking):

在應用程序啟動時,嘗試獲取一個獨占的鎖。如果成功獲取到鎖,說明沒有其他實例正在運行;否則,說明有其他實例正在運行,您可以選擇關閉當前實例或者顯示一個提示對話框告知用戶。

private boolean isInstanceRunning() {
    File file = new File(getApplicationContext().getFilesDir(), "instance_lock");
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(file);
        return fos.getChannel().tryLock() != null;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (isInstanceRunning()) {
        finish(); // 關閉當前實例
    } else {
        // 創建鎖
        try {
            FileOutputStream fos = new FileOutputStream(new File(getApplicationContext().getFilesDir(), "instance_lock"));
            fos.getChannel().lock();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 使用SharedPreferences:

將一個標志存儲在SharedPreferences中,用于表示應用程序是否已經在運行。在應用程序啟動時檢查該標志,如果已經設置,則關閉當前實例;否則,清除該標志并繼續運行。

private boolean isInstanceRunning() {
    SharedPreferences sharedPreferences = getSharedPreferences("app_instance", MODE_PRIVATE);
    boolean isRunning = sharedPreferences.getBoolean("isRunning", false);

    if (isRunning) {
        return true;
    } else {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean("isRunning", true);
        editor.apply();
        return false;
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    SharedPreferences sharedPreferences = getSharedPreferences("app_instance", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean("isRunning", false);
    editor.apply();
}

這兩種方法都可以確保您的Android應用程序以單實例模式運行。文件鎖方法在文件系統中創建一個鎖文件,而SharedPreferences方法使用一個布爾值作為標志。您可以根據自己的需求選擇合適的方法。

0
惠安县| 金山区| 白玉县| 肃南| 嘉兴市| 永泰县| 通榆县| 金坛市| 达尔| 广昌县| 六枝特区| 鹰潭市| 城口县| 汉沽区| 丹寨县| 容城县| 永安市| 贵溪市| 叙永县| 乌兰县| 巴彦县| 塔河县| 宝清县| 邹城市| 长沙市| 南昌市| 通榆县| 祁门县| 富锦市| 唐海县| 迁西县| 壤塘县| 吉隆县| 天长市| 都匀市| 宁都县| 廉江市| 徐州市| 龙川县| 东丽区| 信宜市|