gpt4 book ai didi

android - 为什么要在 IMarketBillingService 之上提供另一个服务?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:21 26 4
gpt4 key购买 nike

谷歌的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com