我正在阅读AsyncTask
,我尝试了下面的简单程序.但它似乎没有用.我怎样才能使它工作?
public class AsyncTaskActivity extends Activity {
Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener((OnClickListener) this);
}
public void onClick(View view){
new LongOperation().execute("");
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
for(int i=0;i<5;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TextView txt = (TextView) findViewById(R.id.output); …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以用来调用基于Web的REST API的服务.
基本上我想在app init上启动服务然后我希望能够要求该服务请求URL并返回结果.与此同时,我希望能够显示进度窗口或类似的东西.
我已经创建了一个目前使用IDL的服务,我已经阅读过你只需要这个用于跨应用程序通信的地方,所以请考虑这些需求,但不确定如何在没有它的情况下进行回调.此外,当我点击post(Config.getURL("login"), values)
应用程序似乎暂停一段时间(似乎很奇怪 - 认为服务背后的想法是它运行在不同的线程!)
目前我有一个带post的服务,里面有http方法,一些AIDL文件(用于双向通信),一个ServiceManager,它处理启动,停止,绑定等服务,我正在动态创建一个具有特定代码的Handler根据需要进行回调.
我不希望任何人给我一个完整的代码库来工作,但一些指针将不胜感激.
代码(大部分)已满:
public class RestfulAPIService extends Service {
final RemoteCallbackList<IRemoteServiceCallback> mCallbacks = new RemoteCallbackList<IRemoteServiceCallback>();
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
}
public IBinder onBind(Intent intent) {
return binder;
}
public void onCreate() {
super.onCreate();
}
public void onDestroy() {
super.onDestroy();
mCallbacks.kill();
}
private final IRestfulService.Stub binder = new IRestfulService.Stub() {
public void doLogin(String username, String password) {
Message msg = new Message();
Bundle data = new …
Run Code Online (Sandbox Code Playgroud) 我想开发一个包含三个活动和两个服务的Android应用程序.
名为WebClientService的第一个Service 使用Handler每30秒调用一次REST API,并且必须通过结果通知活动的Activity.它还必须通知名为DatabaseService的第二个服务,以便更新本地数据库.
数据库服务将被称为只有一次的onCreate(在应用程序崩溃和重启的情况下)的,只是一次活动的onRestart(以这种方式,我们有数据显示的情况下,出现了连接问题).由于WebClientService每隔30秒通知"活动"活动,因此活动将自动更新.
问题是:
通知更新活动活动和后台DatabaseService的最佳方法是什么?我的想法是在WebClientService中使用sendBroadcast()并在每个活动和DatabaseService中使用BroadcastReceiver,这是正确的方法吗?
我应该使用相同的方法进行AllMeetingRoomActivity和DatabaseService之间的通信,还是应该使用绑定服务?
谢谢
更新:DatabaseService不再是后台服务,而只是WebClientService和活动之间的db层的共享实例.
现在的问题是:这是一个很好的方法,只需将我的30秒更新写入本地数据库,并允许活动每隔几秒钟更新一次,只需从本地数据库读取?这会对性能产生太大影响吗?
语境:
遵循我到目前为止所实现的,但使用SettableFutures,因此一旦我明确了如何使它们有效地进行通信,就需要使用服务和广播重新实现:
public class MainActivity extends AppCompatActivity {
private TextView meetingsTextView;
private EditText mEdit, editSubject;
private final ConnectorInitializer clientInitializer = new ConnectorInitializer();
private AppConnector genericClient; // can use OutlookClient or a test client to talk with a mock server
@Override
protected void onCreate(Bundle savedInstanceState) {
// initializes client based on …
Run Code Online (Sandbox Code Playgroud) android android-service android-activity localbroadcastmanager
我是 Android 编程的新手 - 所以我对“上下文”和“意图”不是很清楚。
我想知道有没有办法从 Service 类访问Activity?即假设我有 2 个类 - 一个从“活动”扩展,另一个从“服务”扩展,我在我的活动类中创建了一个意图来启动服务。
或者,如何从我的“活动”类访问“服务”类实例 - 因为在这样的工作流中,服务类不是由我的活动代码直接实例化的。
public class MainActivity extends Activity {
.
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this, CommunicationService.class));
.
.
}
public class CommunicationService extends Service implements ..... {
.
.
@Override
public int onStartCommand(final Intent intent, int flags, final int startId) {
super.onStartCommand(intent, flags, startId);
....
}
}
Run Code Online (Sandbox Code Playgroud)