我在我的Android应用中实现了一个闪屏:
我正在使用AsyncTask来完成所有事情,如果用户在流程中间关闭应用程序或因为应用程序关闭设备,我的问题就出现了:
当然,整个过程(3-5秒)很重要。
所以......我怎么能避免这个?我应该使用处理程序,加载程序,on-(暂停,停止,销毁)方法来实现我的目标吗?你能举个例子吗?
答案 0 :(得分:1)
如上面的评论所述,您应该使用服务,因为他们的生命周期与活动的生命周期是分开的。
像这样创建服务:
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Do everything you need to here, then call stop:
Log.d("DEBUG", "Started...");
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Intent intent = new Intent("com.example.androidexample.SERVICE_STOPPING");
sendBroadcast(intent);
super.onDestroy();
}
}
然后在活动中:
public class MainActivity extends Activity {
private ServiceCompleteReceiver receiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter;
receiver = new ServiceCompleteReceiver();
filter = new IntentFilter("com.example.androidexample.SERVICE_STOPPING");
startService(new Intent(this, MyService.class));
registerReceiver(receiver, filter);
}
public class ServiceCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Do whatever needs to be done here
unregisterReceiver(receiver);
}
}
}
编辑:
别忘了将它添加到你的清单中
<service
android:name="com.example.androidexample.MyService"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
</service>