如何在应用帐单中创建一个单独的线程



我正在遵循应用帐单教程中的Android:

警告:不要在主线程上调用getskudetails方法。调用此方法会触发一个可以阻止主线程的网络请求。而是创建一个单独的线程,然后从该线程的内部调用getskudetails方法。

对于以下代码:

 IInAppBillingService mService;
ServiceConnection mServiceConn = new ServiceConnection() {
    @Override
    public void onServiceDisconnected(ComponentName name) {
        mService = null;
    }
    @Override
    public void onServiceConnected(ComponentName name,
                                   IBinder service) {
        mService = IInAppBillingService.Stub.asInterface(service);
        Intent serviceIntent =
                new Intent("com.android.vending.billing.InAppBillingService.BIND");
        serviceIntent.setPackage("com.android.vending");
        getActivity().bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
        ArrayList<String> skuList = new ArrayList<String>();
        skuList.add("iap_one");
        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
        try {
            Bundle skuDetails = mService.getSkuDetails(3,
                    getActivity().getPackageName(), "inapp", querySkus);
            int response = skuDetails.getInt("RESPONSE_CODE");
            if (response == 0) {
                ArrayList<String> responseList
                        = skuDetails.getStringArrayList("DETAILS_LIST");
                for (String thisResponse : responseList) {
                    try {
                        JSONObject object = new JSONObject(thisResponse);
                        String sku = object.getString("productId");
                        String price = object.getString("price");
                        Log.d("Test Price", price);
                    } catch (JSONException e){
                        Log.e("MYAPP", "unexpected JSON exception", e);
                    }
                }
            }
        } catch (RemoteException e) {
            Log.e("MYAPP", "unexpected Remote exception", e);
        }
    }
};

您需要创建可以通过构造器或使用asynctask类插入可运行的变量的类,并插入所需的变量

class ImplementsRunnable implements Runnable {
  private myvar;
  public ImplementsRunnable(String myvar){
    this.myvar=myvar;
  } 
  public void run() {
     System.out.println("ImplementsRunnable : myvar: " + myvar);
  }

}

最新更新