Yanıtlar:
Düzenleme: Bu yazıyı yazdıktan ve cevap olarak kabul edildikten sonra, am force-stop
komut bu cevapta belirtildiği gibi Android ekibi tarafından uygulandı .
Alternatif olarak: Aksine sen, kullanabilirsiniz her test için bir "temiz bir sayfa" isteyen sayılabilir çünkü sadece, uygulamanın durmaya daha adb shell pm clear com.my.app.package
uygulama sürecini durduracak olan ve bu uygulamaya ilişkin tüm saklanan verileri temizleyin.
Linux'taysanız:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Bu yalnızca bir kabuk çalıştırdıktan hemen sonra kökünüzün olduğu cihazlar / emülatörler için işe yarar. Bu su
önceden aramak için muhtemelen biraz rafine edilebilir .
Aksi takdirde, şunları yapabilirsiniz (manuel olarak veya betiklenmiş varsayalım):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
Uygulamayı durdurmanın temiz yolu:
adb shell am force-stop com.my.app.package
Bu şekilde işlem kimliğini bulmak zorunda kalmazsınız.
force-stop
komut olmadan önce yazdım . Cevabımı buna işaret edecek şekilde güncelledim.
Android 9.0 API Level 28
, uygulama hala görüntülenen son Apps rağmen PID
app ilişkin bulunur. Arka plan uygulamalarından bile gelen uygulamayı tamamen nasıl durduracağınızı biliyor musunuz ?
İlk olarak, uygulamayı arka plana yerleştirin (cihazın ana düğmesine basın)
Sonra ... bir terminalde ....
adb shell am kill com.your.package
Eğer cihaz konsoldan aşağıdaki kullanabilirsiniz: pm disable com.my.app.package
onu öldürmek hangi. Sonra pm enable com.my.app.package
tekrar başlatabilmek için kullanın .
adb shell
, ardından çalıştırmanız gerekir su
.
Uygulama paketine erişiminiz varsa, -r seçeneği ile yükleyebilirsiniz ve şu anda bir yan etki olarak çalışıyorsa işlemi sonlandıracaktır. Bunun gibi:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
-R seçeneği, şu anda uygulama ile ilişkilendirilmiş olan verileri korur. Ancak, bahsettiğiniz gibi temiz bir sayfa istiyorsanız, bu seçeneği kullanmak istemeyebilirsiniz.
Köklü olmayan bir cihazı hedefliyorsanız ve / veya APK'nızda da durdurmak istemediğiniz hizmetlere sahipseniz, diğer çözümler çalışmaz.
Bu sorunu çözmek için, etkinliği durdurmak amacıyla eklediğim bir yayın mesajı alıcısına başvurdum.
public class TestActivity extends Activity {
private static final String STOP_COMMAND = "com.example.TestActivity.STOP";
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
TestActivity.this.finish();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff...
registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND));
}
}
Bu şekilde, etkinliğinizi durdurmak için bu adb komutunu verebilirsiniz:
adb shell am broadcast -a com.example.TestActivity.STOP
Eğer aradığınız tek şey bir paketi öldürüyorsa
pkill package_name
çalışmalı
adb shell killall -9 com.your.package.name
MAC "zorunlu erişim kontrolü" ne göre büyük olasılıkla root tarafından başlatılmayan süreci öldürme izniniz vardır.
iyi eğlenceler!
Tutulmada DDMS perspektifine gidin ve cihazlar sekmesinde, öldürmek istediğiniz cihazın altında öldürmek istediğiniz işlemi tıklayın. Daha sonra sadece durdur düğmesine basmanız gerekir ve bu işlemi sonlandırmalıdır.
Bunu komut satırı aracından nasıl yapacağınızdan emin değilim ama bir yolu olmalı. Belki adb kabuğundan yapıyorsun ...
pkill NAMEofAPP
Köklü olmayan hatmi, termux ve terminal emülatörü.