2010-07-26 64 views
0

我收到以下錯誤:錯誤:方法XXX是未定義類型ActivityManager

錯誤:方法killBackgroundProcesses(字符串)是未定義的類型ActivityManager

現在我死了肯定ActivityManager包含該方法http://developer.android.com/reference/android/app/ActivityManager.html#killBackgroundProcesses%28java.lang.String%29

這裏是代碼,請幫我弄清楚我哪裏出錯了?

package com.robosoft.killswitch; 

import java.util.List; 

import android.app.ActivityManager; 
import android.app.ListActivity; 
import android.app.ActivityManager.RunningAppProcessInfo; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.AdapterView.OnItemClickListener; 

public class KillSwitch extends ListActivity { 
/** Called when the activity is first created. */ 
private RunningApplicationAdapter runningApplicationAdapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
    final List<ActivityManager.RunningAppProcessInfo> RunningApp = am.getRunningAppProcesses();   
    runningApplicationAdapter = new RunningApplicationAdapter(this, RunningApp); 
    //setContentView(R.layout.main); 

    setListAdapter(runningApplicationAdapter); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { 
      RunningAppProcessInfo x = RunningApp.get(pos); 
      String y = x.processName; 
      am.killBackgroundProcesses(x.processName); //Error Here! 
    } 
    }); 
} 
} 

回答

2

這是您唯一的解決方案。

private void initializeKillMethod() { 
      try { 
        this.killMethod = ActivityManager.class.getMethod("killBackgroundProcesses", String.class); 
      } catch (SecurityException e) { 
        e.printStackTrace(); 
      } catch (NoSuchMethodException e) { 
        e.printStackTrace(); 
      } 

      if (this.killMethod != null) { 
        return; 
      } 

      try { 
        this.killMethod = ActivityManager.class.getMethod("restartPackage", String.class); 
      } catch (SecurityException e) { 
        e.printStackTrace(); 
      } catch (NoSuchMethodException e) { 
        e.printStackTrace(); 
      } 
    } 

編輯:對於記錄...我討厭在StackOverflow這裏的代碼格式化程序,因爲它很爛!在發佈代碼時,有一半時間會殺死所有的格式。

這是您的解決方案,帶有按鈕點擊監聽器。 http://androidworkz.com/2010/07/26/backward-compatible-killbackgroundprocesses/

+0

,這適用於API級別8以下的設備和無根設備? – Shouvik 2010-07-26 12:12:57

+0

嘿謝謝你的片段,但我很困惑,我怎麼能用onclicklistener來實現它?我是否將位置解析爲另一個活動並實施此方法或......?感謝你的協助! – Shouvik 2010-07-26 12:14:06

+0

謝謝兄弟!接受的解決方案=) – Shouvik 2010-07-26 14:22:04

1

我看到的唯一原因是您使用的仿真器(或設備)與您用於開發的模擬器(或設備)之間的API級別可能不同。即您正在使用API​​級別8來開發和API級別低於8(API 7也許)

API級別上的模擬器AVD(或設備)進行部署7沒有這個方法

其唯一可用在API級別8

+0

是的,我剛剛得到了!謝謝,你是否碰巧知道在API級別4上可能相當於什麼? – Shouvik 2010-07-26 11:45:46

+0

@Shouvik restartPackage似乎是最接近的一個 – naikus 2010-07-26 12:29:48

+0

重新啓動不殺死進程雖然正確? – Shouvik 2010-07-26 14:20:46

相關問題