Apakah ada cara untuk mematikan Google Maps secara permanen sampai dibutuhkan?

24

Google maps tampaknya memiliki jumlah Intent yang gila yang terdaftar untuknya, serta cara-cara lain untuk memulai.

Karena ini adalah aplikasi yang haus sumber daya (terutama memori), saya sangat ingin itu tidak berjalan secara permanen kecuali / sampai saya benar-benar membutuhkannya. Namun, Android terus memulainya setiap saat - misalnya, ketika status konektivitas berubah (yang bagi saya sering terjadi di dalam ruangan), atau GPS / lokasi jaringan berubah.

Apakah ada cara untuk memastikan bahwa Google Maps tidak memulai proses APA PUN, dijamin, sampai saya mengklik ikon untuk dengan sengaja meluncurkannya?

Lingkungan : Droid X, menjalankan rooted stock Froyo 2.2; Saya memiliki Autostarts . dan Advanced Task Killer, serta Titanium Pro versi Pro yang diinstal.

Saya cukup terbuka untuk hampir semua metode selama

  • Itu bisa diandalkan.

  • Ini memungkinkan saya menggunakan Google Maps dengan fungsionalitas 100% yang dituju begitu saya TIDAK membutuhkannya, tanpa memerlukan 5 menit kerja untuk mengkonfigurasi ulang.

  • Idealnya, tidak mengharuskan saya untuk reboot untuk menggunakannya, tetapi yang ini bukan pembunuh kesepakatan.

  • Saya SANGAT lebih suka metode generik yang akan berlaku untuk aplikasi lain, BUKAN hanya Google Maps.

  • Saya seorang pengembang perangkat lunak dengan pengalaman administrasi sistem Unix / Linux yang lumayan. Dengan kata lain, solusi yang membutuhkan shell prompt atau penulisan / running skrip shell (atau Perl di Android Scripting Environment) sangat disambut.

    Solusi yang melibatkan penulisan aplikasi Java Android saya sendiri dapat diterima selama mereka cukup rinci daripada total pemula pengembangan Android yang dapat menyelesaikan setidaknya beberapa pekerjaan tanpa kehilangan 100%.

Hal yang saya coba:

  • Membunuh proses melalui Task Killer TIDAK berfungsi - mereka muncul kembali, baik segera atau sebentar lagi. Mungkin melalui Intents tetapi tidak 100% pasti.

  • Metode standar untuk menyingkirkan masalah GMaps (logout dari Latitude / matikan GPS dan pelacak jaringan). Ini sepertinya banyak membantu TETAPI saya menemukan kebutuhan untuk secara permanen mematikan GPS / locator menjadi tidak dapat diterima - misalnya itu tidak akan membiarkan saya menjalankan aplikasi lokal atau hal-hal Tasker berbasis lokal.

  • Bekukan melalui Titanium Backup Pro. Ini membutuhkan reboot dan umumnya tidak terlalu menyenangkan.

Kemungkinan pendekatan yang saya pikirkan (tetapi tidak tahu bagaimana melakukannya) adalah:

  • Entah bagaimana, SEPENUHNYA menghilangkan (mematikan) semua Maksud yang terdaftar oleh Google Maps saat tidak diperlukan.

    Masalah: Pertama, saya tidak tahu apa yang SEMUA Maksud dari Google Maps gunakan.

    Kedua, satu-satunya cara praktis untuk melakukan itu yang saya tahu adalah aplikasi Autostarts yang BUKAN solusi yang bisa diterapkan - dibutuhkan ~ 5-10 menit untuk menemukan dan mengaktifkan kembali semua maksud yang saya ketahui (Autostarts sangat buruk per manajemen aplikasi -app - itu berpusat pada per-niat), apalagi niat yang tidak diketahui Autostarts (itu adalah kotak hitam, saya tidak tahu niat yang dilewatkan jika ada.

  • Punya skrip yang akan mengganti nama JAR atau apa pun file yang dapat dieksekusi di Android (seluruh .APK?) Dari say GoogleMaps.apkto GoogleMaps.disabled.apkdan back.

    Masalah: Saya tidak tahu apakah ini bisa dilakukan pada Froyo yang telah di-root. Juga, Google Maps sudah diinstal sebelumnya di DroidX, jadi apakah penamaan ulang HANYA akan mempengaruhi pembaruan tetapi tidak pada aplikasi aslinya?

  • Miliki skrip yang akan masuk ke APK dan mengganti nama / memindahkan / mengosongkan file manifes untuk menghapus maksud apa pun untuk aplikasi itu.

    Masalah: Apakah ini membutuhkan kompilasi ulang? Pasti membutuhkan reboot yang minus

DVK
sumber
2
Harap perhatikan bahwa saya bertanya "Apakah ada cara untuk mematikan Google Maps secara permanen sampai dibutuhkan?". Saya tidak bertanya "Apakah saya perlu menghentikan Google Maps secara permanen dari memulai?", Atau "Apa solusi untuk tetap menjalankan GMaps dan tetap mempertahankan masa pakai baterai yang baik".
DVK
"Bekukan melalui Titanium Backup Pro. Ini membutuhkan reboot dan umumnya tidak terlalu menyenangkan." Itu menarik. Apakah itu melakukannya untuk semua aplikasi, atau hanya sesuatu yang lebih tertanam, seperti Maps?
Peluang
@ Peluang - Kesan saya adalah itu untuk semua aplikasi.
DVK
3
Sudahkah Anda mencobanya? Saya telah menggunakan Ti-Bu untuk membekukan aplikasi sebelumnya, dan saya tidak harus reboot.
Peluang
@ Peluang - Aplikasi saya yang membeku tidak berhenti memunculkan kembali ke dalam memori sampai saya reboot. Mungkin saya salah melakukannya - saya baru mulai menggunakan TBPro baru-baru ini.
DVK

Jawaban:

5

Dari Anda menyebutkan Titanium Backup saya menganggap perangkat Anda sudah di-root. Jadi rekomendasi absolut saya di sini adalah AutoRun Manager (dan ya, Anda akan membutuhkan Pro - ya kedua, itu layak). Setelah itu diinstal, buka aplikasi, gunakan "mode lanjutan", cari aplikasi yang ingin Anda modifikasi (dalam kasus Anda: Google Maps). Perluas itu. ARM akan menunjukkan kepada Anda semua pendengarnya - nonaktifkan mereka.

Itu dia. Tidak ada yang membangunkannya lagi kecuali Anda memulainya secara eksplisit. TETAPI: Sebelum Anda memulainya, Anda mungkin perlu mengaktifkan pendengar itu lagi, atau Anda mungkin mengalami efek samping yang aneh (saya lakukan). Di sisi lain, setidaknya ini tidak memerlukan reboot.

Untuk detail teknis, Anda mungkin ingin memeriksa kembali dengan pertanyaan Bagaimana saya bisa mengelola asosiasi niat dengan aplikasi , atau langsung masuk ke bagian Intents dari manual pengembang AOSP .

Izzy
sumber
16

Pertama, saya sarankan Anda berhenti menggunakan pembunuh tugas Anda . Mereka menguras baterai Anda lebih dari menghematnya. Sistem me-restart layanan ketika mereka harus menjalankan yang menyebabkan penggunaan baterai.

Kedua, Anda berada di bawah asumsi bahwa membebaskan memori adalah hal yang baik. Bukan itu. Membebaskan memori tidak akan mengurangi penggunaan baterai. Yang benar-benar perlu Anda cari adalah aplikasi yang menggunakan banyak siklus CPU. Inilah yang akan menguras baterai Anda.

Android berbasis Linux. Linux selalu ingin menggunakan semua memori yang tersedia karena memori bebas adalah memori yang terbuang. Sistem android akan mengurus pelepasan memori aplikasi yang tidak digunakan sehingga aplikasi lain dapat menggunakannya saat dibutuhkan.

Bahkan jika Anda mencoba dan mematikan aplikasi yang menjalankan dan mengambil memori, sistem akan me-restart layanan / aplikasi ini, yang akan menyebabkan baterai terkuras karena mereka mungkin memiliki beberapa sinkronisasi yang terjadi ketika memulai, atau hanya siklus CPU yang digunakan untuk menginisialisasi aplikasi. Membunuh aplikasi juga akan menyebabkan perangkat tampak lambat ketika mencoba untuk memulai aplikasi karena sesuatu yang biasanya berjalan sekarang perlu dimulai kembali sebelum menghadirkan antarmuka pengguna aplikasi kepada Anda.

Beberapa hal yang akan menyebabkan baterai kehabisan seperti GPS, wifi, bluetooth, dan penggunaan data akan menggunakan CPU Anda lebih banyak untuk memproses data yang sedang dikirim dan diterima. Mematikan ini saat tidak digunakan akan menghemat banyak baterai. Saya memiliki baterai yang buruk di perangkat saya, bahkan tidak dapat mengisi lebih dari 94%, tetapi saya bisa mendapatkan 12 jam atau lebih dari baterai saya jika saya mematikan layanan ini ketika saya tidak membutuhkannya.

Saya menggunakan google maps sepanjang waktu, dan dalam statistik baterai saya bahkan tidak terdaftar sebagai aplikasi yang menggunakan sumber daya. Pengguna baterai tertinggi saya adalah Layar @ 31%, dan yang terendah ditampilkan adalah GMail @ 3%. Saya dapat meyakinkan Anda, google maps bukanlah penyebab kehabisan baterai Anda. Menggunakan pembunuh tugas kemungkinan besar penyebabnya. Seperti yang saya katakan, saya menggunakan google maps untuk petunjuk arah hampir setiap hari, dan itu bahkan tidak ada dalam daftar 10 aplikasi teratas yang menggunakan baterai saya.

Informasi lebih lanjut tentang pembunuh tugas dari blog Google Android Developers .

Kesalahpahaman umum tentang multitasking Android adalah perbedaan antara proses dan aplikasi. Di Android ini bukan entitas yang tergabung secara ketat: aplikasi mungkin tampak hadir bagi pengguna tanpa proses aktual saat ini menjalankan aplikasi; beberapa aplikasi dapat berbagi proses, atau satu aplikasi dapat menggunakan beberapa proses tergantung pada kebutuhannya; proses aplikasi dapat disimpan oleh Android bahkan ketika aplikasi itu tidak secara aktif melakukan sesuatu.

Fakta bahwa Anda dapat melihat proses aplikasi "berjalan" tidak berarti aplikasi sedang berjalan atau melakukan apa saja. Mungkin saja ada di sana karena Android memerlukannya di beberapa titik, dan telah memutuskan bahwa akan lebih baik untuk tetap menggunakannya jika perlu lagi. Demikian juga, Anda dapat meninggalkan aplikasi untuk sedikit dan kembali ke sana dari tempat Anda tinggalkan, dan selama waktu itu Android mungkin harus menyingkirkan proses untuk hal-hal lain.

Kunci bagaimana Android menangani aplikasi dengan cara ini adalah proses tidak dimatikan dengan bersih. Ketika pengguna meninggalkan aplikasi, prosesnya disimpan di latar belakang, memungkinkannya untuk terus bekerja (misalnya mengunduh halaman web) jika diperlukan, dan segera datang ke latar depan jika pengguna kembali ke sana. Jika sebuah perangkat tidak pernah kehabisan memori, maka Android akan menjaga semua proses ini, benar-benar meninggalkan semua aplikasi "berjalan" sepanjang waktu.

Tentu saja, ada jumlah memori terbatas, dan untuk mengakomodasi ini Android harus memutuskan kapan harus menyingkirkan proses yang tidak diperlukan. Ini mengarah ke siklus hidup proses Android, aturan yang digunakannya untuk memutuskan seberapa penting setiap proses dan dengan demikian yang selanjutnya harus dijatuhkan. Aturan-aturan ini didasarkan pada seberapa penting suatu proses untuk pengalaman pengguna saat ini, serta berapa lama sejak proses terakhir dibutuhkan oleh pengguna.

Setelah Android menentukan bahwa ia perlu menghapus suatu proses, ia melakukan ini secara brutal, cukup dengan membunuhnya secara paksa. Kernel kemudian dapat segera mengklaim kembali semua sumber daya yang dibutuhkan oleh proses, tanpa bergantung pada aplikasi yang ditulis dengan baik dan responsif terhadap permintaan sopan untuk keluar. Mengizinkan kernel untuk segera mendapatkan kembali sumber daya aplikasi membuatnya jauh lebih mudah untuk menghindari situasi kehabisan memori yang serius.

Jika nanti pengguna kembali ke aplikasi yang telah dimatikan, Android membutuhkan cara untuk meluncurkannya kembali dalam kondisi yang sama seperti yang terakhir kali terlihat, untuk mempertahankan pengalaman "semua aplikasi berjalan sepanjang waktu". Ini dilakukan dengan melacak bagian-bagian aplikasi yang diketahui pengguna (Aktivitas), dan memulai kembali dengan informasi tentang keadaan terakhir yang mereka lihat. Keadaan terakhir ini dihasilkan setiap kali pengguna meninggalkan bagian itu aplikasi, bukan saat dimatikan, sehingga kernel kemudian dapat dengan bebas membunuhnya tanpa bergantung pada aplikasi untuk merespons dengan benar pada saat itu.

Dalam beberapa hal, manajemen proses Android dapat dilihat sebagai bentuk ruang swap: proses aplikasi mewakili sejumlah memori yang digunakan; ketika memori rendah, beberapa proses dapat dimatikan (ditukar); ketika proses-proses itu diperlukan lagi, mereka dapat dimulai kembali dari keadaan terakhir yang disimpan (ditukar).

Berikut ini adalah artikel lain yang membahas tentang bagaimana para pembunuh tugas akan menghabiskan baterai Anda.

Jangan gunakan Perangkat Lunak Pembunuh Tugas Otomatis.
Untuk membuat cerita yang singkat, menggunakan pembunuh tugas otomatis dapat menyebabkan: pengurasan baterai yang berlebihan (seolah-olah telepon tidak menguras baterai dengan cukup cepat), telepon terlalu sering panas dan program-program mematikan (macet) secara acak - program yang sebenarnya ingin Anda gunakan. Tinggal jauh dari ini!

Satu hal yang dapat Anda lakukan jika Anda benar-benar ditetapkan pada "menghentikan peta" sampai Anda ingin menggunakannya adalah menggunakan opsi Freeze di cadangan titanium. Ini pada dasarnya akan menghapus aplikasi dari perangkat dan tidak ada layanan yang terkait dengannya yang akan mulai sampai Anda berhenti membeku.

Ryan Conrad
sumber
1
membebaskan memori membuat Droid X saya dari merangkak sangat lambat dengan ~ 30-40 MB gratis menjadi cukup responsif dan cepat dengan> 70MB gratis, tanpa aplikasi yang memonopoli CPU dalam kedua kasus. Maaf, tapi itu sedikit teori yang tidak berlaku dalam praktik.
DVK
Juga, ketika manajer memori Android membunuh peramban web saya kehilangan SEMUA tab terbuka saya untuk memberi ruang bagi Google Maps, itu adalah produktivitas besar.
DVK
4
Saya memberi tahu Anda, apa yang Anda alami adalah efek plasebo. membebaskan memori tidak membuat perangkat Anda berjalan lebih cepat, CPU gratis tidak. Saya telah menyertakan referensi lain untuk Anda tentang topik pembunuh tugas (langsung dari google)
Ryan Conrad
2
Menggunakan task killer akan menyebabkan menguras, dan saya menjelaskan mengapa dalam jawaban saya. Selain itu, jika Anda membaca seluruh jawaban, saya memberikan jawaban yang tepat untuk masalah Anda menggunakan titanium dengan membekukan aplikasi.
Ryan Conrad
3
@ Peluang tidak, karena jika Anda membunuh proses yang tidak benar-benar berjalan pada saat itu, sistem pada akhirnya harus memulai proses itu kembali dan akan melakukan "semua inisialisasi" yang akan menggunakan CPU. Hanya karena suatu proses sedang berjalan, tidak berarti bahwa ia benar-benar melakukan sesuatu pada saat itu.
Ryan Conrad
11

Pernahkah Anda berpikir tentang tidak menginstal dan menginstal ulang Maps sebagai solusi yang memungkinkan?

  1. Pertama, singkirkan Maps yang sudah dimuat sebelumnya dengan menghapus /system/app/Maps.apkfile:

    su  
    rm /system/app/Maps.apk
    

    Setelah aplikasi sistem diperbarui, tidak ada gunanya di folder / system / app dan dapat dihapus dengan aman.

  2. Kemudian salin versi Maps saat ini ke Kartu SD Anda:

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
    
  3. Copot pemasangan aplikasi Maps:

    pm uninstall -k com.google.android.apps.maps
    

    Tombol "-k" menyimpan pengaturan ketika Anda menginstal ulang aplikasi.

  4. Sekarang untuk mendapatkan Maps kembali cukup instal ulang dari cadangan:

    pm install -r /sdcard/com.google.android.apps.maps*.apk
    

Anda dapat mengotomatiskan langkah-langkah ini melalui GScript , yang memungkinkan Anda membuat pintasan ke skrip. Jadi cukup buat satu skrip bernama "Nonaktifkan Peta" dengan perintah dari langkah # 3, dan yang lain bernama "Aktifkan Peta" dengan perintah dari langkah # 4 (centang "Butuh SU?" Untuk keduanya).

Sekarang Anda dapat menambahkan 2 pintasan GScript ke layar beranda dari skrip yang Anda buat dengan menggunakan metode normal "Tambah Pintasan" Android (GScript akan menjadi salah satu opsi di sana.)

Satu-satunya kelemahan dari metode ini adalah kemungkinan besar Anda akan kehilangan pintasan Maps (dan / atau widget) dari layar beranda saat Anda mencopotnya, mengharuskan Anda untuk menambahkannya kembali setelah menginstal ulang. Anda tentu saja masih dapat meluncurkan Maps dari laci aplikasi.

Chahk
sumber
Apakah prosedur ini akan terpengaruh secara negatif oleh fakta bahwa Maps telah diinstal sebelumnya pada DroidX saya? Atau itu tidak ada dalam ROM? +1 untuk ide bagus!
DVK
2
Jika Anda tidak menghapus versi sistem APK terlebih dahulu, un-install akan gagal. Secara umum, setelah aplikasi sistem mendapat pembaruan dari Market, APK yang sesuai di / system / app / folder dapat dengan aman dihapus.
Chahk
1
@ Chank - Saya berasumsi bahwa, itu bukan Verizon bloatware, saya benar-benar memiliki akses untuk menghapus versi sistem selama saya mendapatkan root? :)
DVK
1
Selama ponsel Anda di-rooting, Anda seharusnya tidak akan kesulitan menghapus Maps.apk dari / system / app.
Chahk
2

Dimulai dengan Android 4.0 Ice Cream Sandwich, Anda cukup menonaktifkan Google Maps di pengaturan sistem . Ini tidak akan membantu Anda jika Anda masih terjebak di Froyo, tetapi orang lain mungkin mendapat manfaat darinya.

Michael Hampton
sumber
Apakah ini menonaktifkan semua layanan terkait? (GM dan Latitude dll ...)?
DVK
Ini menonaktifkan aplikasi itu sepenuhnya, termasuk semua yang dibawanya. Sejauh yang saya tahu, itu termasuk Navigasi, Latitude, dll.
Michael Hampton
1

Saya sarankan menggunakan fitur Freeze dari tautan pasar beranda cadangan Titanium . Saya yakin Anda harus mendaftarkan aplikasi ($ 6,58) untuk menggunakan fitur ini, tetapi saya yakinkan Anda, itu sepadan dengan harganya jika Anda ingin meretas ponsel Anda. Alasan utama lain untuk membayar aplikasi (selain untuk mendukung pengembang untuk menulis perangkat lunak gratis) adalah untuk dapat melakukan pemasangan batch (yaitu memulihkan dari cadangan) aplikasi dan data yang telah Anda buat cadangannya. Kalau tidak, Anda harus melalui dialog pemasangan aplikasi standar.

Dari situs web tentang pembekuan:

Freezer aplikasi dapat menonaktifkan aplikasi (dan membuatnya tidak terlihat) tanpa membatalkan pemasangannya

Atau Anda benar-benar dapat melakukan uninstall dan instal ulang. Anda mungkin menemukan ada alasan untuk melakukan itu pada titik beku, saya tidak tahu.

halr9000
sumber
Maaf, tapi ini tidak membantu. Dalam pertanyaan saya, di bawah "Hal yang saya coba", poin # 3: "Bekukan melalui Titanium Backup Pro. Ini membutuhkan reboot dan umumnya tidak terlalu menyenangkan."
DVK
0

Jika ponsel Anda memiliki opsi Settings > Applications > Development > Stop app via long-press, Anda selalu dapat menutup Google Maps dengan cara ini, maka proses ini terbunuh juga hingga Anda membuka aplikasi lagi.

Penjualan Dielson
sumber
-1

Rooting ponsel Anda kemudian gunakan aplikasi AutoStarts dari Google Play untuk menonaktifkan semua peristiwa yang memicu Maps. Ini akan berjalan dengan baik ketika mulai secara manual tetapi akan tetap hilang ketika Anda membunuhnya. Nonaktifkan hal lain yang tidak Anda butuhkan di folder acara Setelah Startup untuk mengurangi konsumsi memori.

Saya disini
sumber
1
Apakah Anda membaca pertanyaan dengan cermat? Secara eksplisit menyatakan:Second, the only practical way of doing that that I know of is Autostarts app which is NOT a workable solution - it takes ~5-10 mins to find and re-enable all the intents I am aware of (Autostarts is really poor at per-app intent management - it's centered on per-intent), never mind possible intents that Autostarts does NOT know about (it's a black box, I don't know which intents are missed if any.
DVK