- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
谷歌的 market_billing sample , 就像其他人一样 this one ,通过本地服务包装器BillingService
连接到远程服务IMarketBillingService
。
我知道服务有在后台做事的优势,但远程 IMarketBillingService
还不够吗?
在这个洋葱上再加一层有什么好处?
如果我尝试在 UI 线程中直接从我的主要 Activity 连接到远程 IMarketBillingService
,我会失去什么?
如果不建议在 UI 线程中直接连接到远程 IMarketBillingService
,是否可以将本地 BillingService
替换为主 Activity 中的另一个线程?
最佳答案
当您的 Activity 未运行时,本地 BillingService 会处理来自 IMarketBillingService 的回调。
引用文献 ( http://developer.android.com/reference/android/app/Activity.html ) 说:
"If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state."
例如,如果您调用 RESTORE_TRANSACTIONS 计费请求,Android 电子市场服务的响应可能需要一些时间才能到达。通过使用服务,您知道您将始终处理响应,而不管 Activity 生命周期如何。
为了好玩,我尝试编写了一个小型测试应用程序,结果大吃一惊。正在运行的线程可以调用暂停或停止 Activity 的方法。即使 Activity 不在前台,线程也可以修改它的 UI。运行以下应用程序,按主屏幕停止应用程序。 10秒后返回,发现TextView变了...
package com.example.playground;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class MyActivity extends Activity {
private static String TAG = MyActivity.class.getName();
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread t = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(10000);
someMethod();
} catch (InterruptedException e) {
Log.e(TAG, e.getMessage(), e);
}
}
});
t.start();
}
private void someMethod() {
Log.d(TAG, "Some method called");
TextView tv = (TextView) findViewById(R.id.textfield);
tv.setText("Called later");
}
}
关于android - 为什么要在 IMarketBillingService 之上提供另一个服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871386/
我不知道这是否适合所有人,但是更新 Eclipse 和清理我的项目导致 IMarketBillingService 出现问题,其中 @Override public android.os.IBinde
谷歌的 market_billing sample , 就像其他人一样 this one ,通过本地服务包装器BillingService连接到远程服务IMarketBillingService。 我
我尝试导入 com.android.vending.billing.IMarketBillingService。但是我得到了错误: The import com.android.vending.bil
我有一个实现应用内结算的项目。目前正在市场,一切正常。既然我想为更新制作一个新版本,事情就颠倒了。我已经清理了我的项目,ImarketBillingService.java 文件不再生成。我尝试过的事
我正在尝试在我的 Andorid 应用程序中实现 In app billing 服务。 我已将 IMarketBillingService.aidl 文件添加到我在 Eclipse 中的项目中。然后
我一直在开发一个 Android 应用程序,我必须在其中集成应用内结算。我正在按照以下链接中给出的程序进行操作,但没有收到效果。 http://developer.android.com/guide/
我在这里查看 Android 应用内结算教程: http://developer.android.com/guide/google/play/billing/billing_integrate.htm
我只是好奇,但是对于Android计费,Android提供了这个类: import android.os.Bundle; interface IMarketBillingService { /
我正在尝试启动 com.android.vending.billing.IMarketBillingService 服务,我收到了这条消息。我正在使用模拟器 Android 2.3.3 - API 级
各位,我的 android 应用程序目前有 1 个警告,位于 IMarketBillingService.java 文件的第 80 行,该文件是 Google 新提供的应用内购买代码的一部分。警告内容
我是一名优秀的程序员,十分优秀!